/**
* Created by lxw, liwei4939@126.com on 2017/11/7.
* 统计完全二叉树的节点数
* 给定一棵完全二叉树的头结点haed, 返回这棵树的节点个数
*/
public class completeBTNodeNum {
public class Node{
public int value;
public Node left;
public Node right;
public Node(int data){
this.value = data;
this.left = null;
this.right = null
}
}
public int nodeNum(Node head){
if(head == null){
return 0;
}
return bs(head, 1, mostLeftLevel(head, 1));
}
public int mostLeftLevel(Node node, int level){
while (node != null){
level++;
node = node.left;
}
return level -1;
}
public int bs(Node node, int l, int h){
if(l == h){
return 1;
}
if(mostLeftLevel(node.right, l+1) == h){
return (1 << (h - l) + bs(node.right, l+1, h));
} else {
return (1 << (h-l-1) + bs(node.left, l+1, h));
}
}
}
统计完全二叉树的节点数
最新推荐文章于 2025-05-16 18:34:34 发布