public class Test { public Node root;public void insert(int value){root = insert(root,value);}public Node insert(Node node,int value){if(node == null){node = new Node(value);}else if(node.value > value){node.left = insert(node.left,value);}else{node.right = insert(node.right,value);}return node;}public void print(Node node){if(node != null){print(node.left);System.out.println(node.value);print(node.right);}}public void turn(Node node){if(node != null){turn(node.left);turn(node.right);//左右2個排序鏈表 串連起來即可//注意葉子節點情況Node temp = node.left;while(temp != null){if(temp.right == null){break;}else{temp = temp.right;}}if (temp != null) {node.left = temp;temp.right = node;}temp = node.right;while(temp != null){if(temp.left == null){break;}else{temp = temp.left;}}if (temp != null) {node.right = temp;temp.left = node;}}}public static void main(String[] args){Test t = new Test();int[] a = {10,6,14,4,8,12,16};for(int i = 0; i < a.length; i++){t.insert(a[i]);}Node node = t.root;t.turn(node);System.out.println(t.root.value);System.out.println(t.root.left.value);System.out.println(t.root.left.left.value);System.out.println(t.root.left.left.left.value);}}
樹是: 10
6 14
4 8 12 16
程式輸出為10 8 6 4
是否存在和為sum的路徑?
public boolean hasPath(Node node,int sum){if(node == null){return false;}if(node.value == sum){return true;}return hasPath(node.left,sum - node.value) || hasPath(node.right,sum - node.value);}