二叉树的有序遍历

时间:2018-12-12 22:28:35

标签: binary-tree inorder

我想让我的有序遍历代码从数组中获取他的值?

这是我的代码寻找通常的顺序遍历的方式。

   class TreeNode{
     TreeNode left;
     TreeNode right;
     int data;

     TreeNode(int data){
         this.data= data;
     }

   public void inorder(TreeNode root)
 {
     int i;
     if (root == null)
     {
         return;
     }
        Stack<TreeNode>stack = new Stack<>();
        TreeNode temp= root;
       while(!stack.isEmpty() || temp != null) {
           if(temp != null) {
               stack.push(temp);
               temp=temp.left;
           }
           else
           {
               temp= stack.pop();
               array[i]=temp; // in normal cases I would just printout here
               i=i+1;         // like this there should be an sorted array at the end?
               temp=temp.right;
           }
       }
 }

我不了解的部分是我应该如何创建带有数组的二叉树。这就是我通常会怎么做

    public void createBinaryTree(){
       TreeNode first= new TreeNode(8)
       TreeNode second= new TreeNode(4)
       TreeNode third= new TreeNode(5)
       TreeNode fourth= new TreeNode(6)

       root= first;
       first.left=second;
       first.right=third;
       second.left = fourth;

我想我可以通过使用某种循环来处理数组,但是由于我事先不知道数组会持续多久,所以我无法真正确定所创建的树应该有多大。

我知道我的英语不是很好,但是我希望它足以让你们理解我的意思。

0 个答案:

没有答案