Обход Бинарного дерева - PullRequest
       34

Обход Бинарного дерева

0 голосов
/ 13 декабря 2018

Я хочу, чтобы мой код обхода inorder получал его значения из массива?

Так выглядит мой код для обычного обхода 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;

Полагаю, я мог бы сделать это с массивом, используя какой-то цикл, но так как я не могу знать, как долго массив будет заранее, я не могу реально определить, насколько большойсозданное дерево должно быть.

Я знаю, что мой английский не настолько хорош, но я надеюсь, что этого достаточно, чтобы вы, ребята, поняли, что я хочу сказать.

...