求讲解 二叉树求高度的递归算法
这是一个二叉树求高度的算法 我看了半天没弄明白 他是递归比较两个左子树和右子树的高度 然后再把较大的那个+1 得到二叉树的高度 但是他的递归是到底怎样算出高度的???就是最后那句 怎么算出高度的????
public int height(BinaryTreeNode p) { //p是一个二叉树根节点的引用 if(p == null){ System.out.println("高度为0") return 0; }else{ return 1 + max(height(llink),height(rlink)); //这个LLINK 和RLINK分别是p的两个指针,指向左子树和右子树 }}
左子树的高度height(llink) 右子树的高度height(rlink) 这两个高度当然要取更大的数 对吧 加上自己的节点 1: 本次递归的p------> O(p) / \ / \ height(llink)------>左子树 右子树 <----------height(rlink) 总的高度 为 1 + max(height(llink),height(rlink));