首页 > 其他 > 详细

[itint5]完全二叉树节点个数的统计

时间:2014-01-16 23:20:03      阅读:495      评论:0      收藏:0      [点我收藏+]

http://www.itint5.com/oj/#4

这题是利用完全二叉树的性质计算节点数目。那么是通过比较左右子树的最左结点的高度来看那边是满的,然后递归计算。

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
//使用getLeftChildNode(TreeNode)获得左儿子结点
//使用getRightChildNode(TreeNode)获得右儿子结点
//使用isNullNode(TreeNode)判断结点是否为空
int get_left_height(TreeNode root) {
    if (isNullNode(root)) {
        return 0;
    } else {
        return get_left_height(getLeftChildNode(root)) + 1;
    }
}
 
int count_complete_binary_tree_nodes(TreeNode root) {
    if (isNullNode(root))
        return 0;
    TreeNode leftNode = getLeftChildNode(root);
    TreeNode rightNode = getRightChildNode(root);
    int lheight = get_left_height(leftNode);
    int rheight = get_left_height(rightNode);
    if (lheight == rheight) {
        return (1 << lheight) + count_complete_binary_tree_nodes(rightNode);
    } else {
        return (1 << rheight) + count_complete_binary_tree_nodes(leftNode);
    }
}

  

[itint5]完全二叉树节点个数的统计

原文:http://www.cnblogs.com/lautsie/p/3521786.html

(0)
(0)
   
举报
评论 一句话评论(0
关于我们 - 联系我们 - 留言反馈 - 联系我们:wmxa8@hotmail.com
© 2014 bubuko.com 版权所有
打开技术之扣,分享程序人生!