2016-10-02 147 views
2

我遇到以下算法,將五個節點插入二叉樹,然後遍歷樹。二叉樹算法

正在創建什麼樣的樹結構?它是平衡還是不平衡?你怎麼知道?這會影響算法執行的遍歷類型嗎?

import Prog1Tools.IOTools; 

class Node { 
    Node left; 
    Node right; 
    int value; 

    public Node(int value) { 
     this.value = value; 
    } 
} 

public class GeneralTreeTest { 
    public static void main(String[] args) { 

     // build a simple tree add 5 nodes to the tree 
     Node root = new Node(5); 
     System.out.println("Tree Example"); 
     System.out.println("Building tree with root value " + root.value); 
     insert(root, 1); 
     insert(root, 8); 
     insert(root, 6); 
     insert(root, 3); 
     insert(root, 9); 
     System.out.println("Traversing tree "); 
     printOrder(root); 

    } 

    public static void insert(Node node, int value) { 
     if (value < node.value) { 
      if (node.left != null) { 
       insert(node.left, value); 
      } else { 
       System.out.println(" Inserted " + value + " to left of " 
        + node.value); 
       node.left = new Node(value); 
      } 
     } else if (value > node.value) { 
      if (node.right != null) { 
       insert(node.right, value); 
      } else { 
       System.out.println(" Inserted " + value + " to right of " 
        + node.value); 
       node.right = new Node(value); 
      } 
     } 
    } 

    public static void printOrder(Node node) { 
     if (node != null) { 
      printOrder(node.left); 
      System.out.println(" Traversed " + node.value); 
      printOrder(node.right); 
     } 
    } 
} 
+0

看來是不平衡的。應該很容易查找平衡二叉樹的定義並繪製一個您創建的平面 –

回答

0

它是一個平衡的一個或和不平衡呢?

您沒有任何平衡邏輯。例如,您插入1,2,3,則所有節點都將繼續向右。例如,在AVL平衡樹中,1會「向左旋轉」,2會成爲根,因此會平衡樹。

你怎麼能判斷它是否是一個或另一個

你可以繪製出節點的數據結構的指針在你的樹。

會影響遍歷算法導通類型。

不應該。您正在打印左側,然後右側打印。相同的順序將適用於任何類型的二叉樹的