中序遍历


Question

给出一个二叉树,打印它的底视图。 假设左右子节点与其父节点成45度角。
例如,下面的树的底视图是7,5,8,6

  1
 / 
2   3
   / 
  5   6
 / 
7   8


Code

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41

class Node {
int data;
Node left, right;

Node(int item) {
data = item;
left = right = null;
}
}

public class A031 {
Node root;
int diameter = 0;
public int diameterOfBinaryTree(Node root) {
getDepth(root);
return diameter;
}
// 此函数是返回树的最大深度
private int getDepth(Node root) {
if (root == null)
return 0;
int l = getDepth(root.left);
int r = getDepth(root.right);
diameter = Math.max(diameter, l + r);
return Math.max(l, r) + 1;
}
public static void main(String args[]) {

A031 tree = new A031();

tree.root = new Node(1);
tree.root.left = new Node(2);
tree.root.right = new Node(3);
tree.root.left.left = new Node(5);
tree.root.left.right = new Node(6);
tree.root.left.left.left = new Node(7);
tree.root.left.left.right = new Node(8);
System.out.println(tree.diameterOfBinaryTree(tree.root)+1);
}
}