标签:search 一个 package 树节点 lse return 高度 完全 new
计算完全二叉树节点数。
package Tree;
public class NodeCnt {
public static void main(String args[]) {
Node root=new Node(10);
Node node1=new Node(11);
Node node2=new Node(14);
Node node3=new Node(11);
Node node4=new Node(15);
Node node5=new Node(16);
root.left=node1;
root.right=node2;
node1.left=node3;
node1.right=node4;
node2.left=node5;
System.out.print(nodeCnt(root));
}
public static int nodeCnt(Node root) {
if(root==null) {
return 0;
}
return search(root,1,mostLeftNodeH(root,1));
}
public static int search(Node root,int h,int H) {
if(h==H) {
return 1;
}
if(mostLeftNodeH(root.right,h+1)==H) {//
return (1<<(H-h))+search(root.right,h+1,H);//
}
else {
return (1<<(H-h-1))+search(root.left,h+1,H);
}
}
public static int mostLeftNodeH(Node root,int level) {//从原始root
Node node=root;
while(node!=null) {
++level;
node=node.left;
}
return level-1;//
}
}
标签:search 一个 package 树节点 lse return 高度 完全 new
原文地址:https://www.cnblogs.com/coding-gaga/p/11067465.html