求解二叉树高度,探索该过程中递归返回值
package treepack;
public class Edge {
// 首先定义一个节点
public static class Node {
int value;
Node right;
Node left;
public Node(int value) {
this.value = value;
}
}
// 求解树的高度
public static int heigh(Node head, int n) {
// 向下递归,找到最后,停止条件如下:
if (head == null) {
//不断向下找,先找左边,再找右边,所以会最先找到最左边,
//只要找到有null,就会返回一次。从图中看出,一共这里返回了10次
System.out.println(n + " null的位置");
return n;
}
int heigh1 = heigh(head.left, n + 1);
int heigh2 = heigh(head.right, n + 1);
n = Math.max(heigh1, heigh2);
//不停向右移动,移动一下,就和最近的数据做比较,返回较大值,
//这个最大值会保留,向上返回,用于下一次比较
System.out.println(n + " ");
return n;
}
public static void main(String[] args) {
Node tree = new Node(1);
tree.left = new Node(2);
tree.right = new Node(3);
tree.left.left = new Node(4);
tree.left.right = new Node(5);
tree.right.left = new Node(6);
tree.right.left.left = new Node(7);
tree.left.left.left = new Node(8);
tree.left.left.left.left = new Node(9);
int heigh = Edge.heigh(tree, 0);
System.out.println("最后的返回值:" + heigh);
}
}
控制台: