如何仅从级别顺序遍历字符串构造二叉树

金森·乔治(Jinson George)

考虑具有以下属性的二叉树:

  1. 如果内部节点(非叶节点)有两个子节点,则其值为1。
  2. 叶子节点没有子节点,因此其值为0。

在树上进行级别顺序遍历将生成1和0的字符串(通过在访问它们时在每个节点上打印怪异值)。现在给定该字符串,构造二叉树并在该树上执行后顺序遍历。后订单字符串应为程序的输出。

例如:输入字符串为111001000由此创建一个二叉树。然后在树上执行后顺序遍历,这将导致输出:001001011

问题的“关键点”是仅从级别顺序字符串创建二叉树。我该怎么做?

金森·乔治(Jinson George)

我认为从概念上讲更简单。

import java.util.LinkedList;
import java.util.Queue;

class WeirdBinaryTree
{
static class Node
{
    private Node right;
    private Node left;
    private int weirdValue;

    public void setWeirdValue(int value)
    {
        weirdValue=value;
    }
}

private static Node makeTree(String str)throws Exception
{
    char[] array=str.toCharArray();
    Node root=new Node();
    Queue<Node> list=new LinkedList();
    list.add(root);
    int i=0;
    Queue<Node> nextList=new LinkedList<Node>();
    while(!list.isEmpty())
    {
        if(array[i++]=='1')
        {                
                Node temp=list.poll();
                temp.left=new Node();
                temp.right=new Node();
                temp.setWeirdValue(1);
                nextList.add(temp.left);
                nextList.add(temp.right);       
        }
        else
        {
            list.poll();
        }
        if(list.isEmpty())
        {
            list=nextList;
            nextList=new LinkedList<Node>();
        }
    }
    return root;
}

private static void postTraversal(Node localRoot)
{
    if(localRoot!=null)
    {
        postTraversal(localRoot.left);
        postTraversal(localRoot.right);
        System.out.print(localRoot.weirdValue);
    }
}

public static void main(String[] args)throws Exception 
{
    postTraversal(makeTree("111001000"));
}
}

本文收集自互联网,转载请注明来源。

如有侵权,请联系[email protected] 删除。

编辑于
0

我来说两句

0条评论
登录后参与评论

相关文章

来自分类Dev

如何仅从级别顺序遍历字符串构造二叉树

来自分类Dev

如何从级别顺序遍历创建二叉树?

来自分类Dev

如何使用级别顺序遍历序列构造二叉树

来自分类Dev

从级别顺序和顺序树遍历构建二叉树

来自分类Dev

从字符串构造一个Ruby二叉树

来自分类Dev

需要帮助从二叉树构造带有括号的字符串

来自分类Dev

从字符串构造一个Ruby二叉树

来自分类Dev

字符串c的二叉树

来自分类Dev

字符串c的二叉树

来自分类Dev

从字符串输入创建二叉树

来自分类Dev

java中字符串的二叉树

来自分类Dev

二叉树。叶节点的顺序(遍历树)

来自分类Dev

如何在不使用递归和级别顺序遍历的情况下找到二叉树的高度?

来自分类Dev

之字形方式遍历二叉树的打印级别顺序

来自分类Dev

在二叉树的级别顺序遍历中获取运行时错误

来自分类Dev

在python中按级别顺序遍历二叉树

来自分类Dev

如何创建值类型字符串的二叉树

来自分类Dev

如何更改二叉树中字符串的值?

来自分类Dev

Python中的二叉树级顺序遍历

来自分类Dev

二叉树级顺序遍历-反向

来自分类Dev

如何使用递归遍历此二叉树?

来自分类Dev

预购二叉树遍历

来自分类Dev

无序二叉树遍历

来自分类Dev

如何从字符串创建二叉搜索树?

来自分类Dev

将字符串转换为二叉树

来自分类Dev

使用字符串的二叉树,添加节点时遇到问题

来自分类Dev

如何将字符插入二叉树?

来自分类Dev

如何反转二叉树

来自分类Dev

级别二叉树遍历的魔术代码-怎么回事?