精通c语言的亲们,关于二叉树节点怎么计算呢

如题所述

首先,你要使用到二叉树的遍历。二叉树的遍历有中序遍历,前序遍历和后续遍历。
不管你用的是哪一中遍历方式,只要你扫描的某个节点的左右孩子为空,那么该节点就是叶子节点,这时你的计数器加1就行。
如:
f(binary_tree * head)
{
int count = 0;
binary_tree pt = head;
if(head == NULL) break;
if(pt->lchaild==NULL && pt->rchild==NULL) count ++;
else if(pt->lchild) f(pt->lchild);
else if(pt->rchild) f(pt->rchild);
}
温馨提示:内容为网友见解,仅供参考
第1个回答  2012-08-29
建议你看看数据结构里面的二叉树几大特有性质,上面有详细的分析。
第2个回答  2012-09-12
n0=n2+1 这是公式,叶子节点等于度为2的节点个数加一

精通c语言的亲们,关于二叉树节点怎么计算呢
首先,你要使用到二叉树的遍历。二叉树的遍历有中序遍历,前序遍历和后续遍历。不管你用的是哪一中遍历方式,只要你扫描的某个节点的左右孩子为空,那么该节点就是叶子节点,这时你的计数器加1就行。如:f(binary_tree * head){ int count = 0;binary_tree pt = head;if(head == NULL) break...

c语言,二叉树求解~
先考虑度为2的结点,第一层1个,第二层2个,第三层4个,第四层8个,第五层8个,共23个。然后第5层还有8个空位,先假设为叶子节点,即度为0。第五层满,目前总共31个结点。然后第五层的8个度为2的结点可以引申出16个叶子结点,总共47个,以满足题意,假设成立。故6层。当然比较简单的题画...

二叉树的叶子节点数如何计算?
计算公式:n0=n2+1 n0 是叶子节点的个数 n2 是度为2的结点的个数 n0=n2+1=5+1=6 故二叉树有5个度为2的结点,则该二叉树中的叶子结点数为6。

怎么用C语言写求一棵二叉树的叶子结点个数
只写函数,root是根节点 int LeafCount(node root){ int i;if(root){ i = !((root->lChild ? 1:0) | (root->rChild? 1:0));return i + LeafCount(root->lChild) + LeafCount(root->rChild);} return 0;}

二级C语言中"告诉了完全二叉树的总结点数,怎么求它的叶子结点数"?
完全二叉树有一个性质: 具有n个结点的完全二叉树的深度为log2n(2是下标)+1。根据这个性质,就可以求得完全二叉树的深度为10 10层满二叉树的总结点数为1023,最后一层的结点数应该是2的9次方为512,所以肯定699个结点肯定不是满二叉树。。。叶子节点出现在最后两层上。。。最后一层叶子结点个数为...

二叉树(C语言)
这个问题,可以看成完全二叉树,有性质有节点i的父节点为: i\/2.而题目要求的意思也就是找到两个节点的公共父节点。(含可能为其中一个节点)因此,思路如下:输入两个值 x,y 找到较大的那个,(循环的,因不断改变,所以需不断比较)做x=x\/2;(假设此时x较大,x为int 型)然后再比较,,...

C语言 什么叫完全二叉树?
叶子结点只可能在最大的两层上出现,对任意结点,若其右分支下的子孙最大层次为L,则其左分支下的子孙的最大层次必为L 或 L+1。完全二叉树第i层至多有2^(i-1)个节点,共i层的完全二叉树最多有2^i-1个节点。满二叉树:除最后一层无任何子节点外,每一层上的所有结点都有两个子结点的...

C语言二叉树中“度”为0,1,2各是什么意思啊?
只有一个根,没有孩子的二叉树度为0,所有节点只有一个孩子的二叉树的度为1,节点中有两个孩子的二叉树的度为2。树所包含的节点中,拥有最大的分支的数目为该树的度。二叉树的度小于等于2,因为二叉树的定义要求二叉树中任意结点的度数(结点的分支数)小于等于2 ,并且两个子树有左右之分,顺序...

二级C语言中"告诉了完全二叉树的总结点数,怎么求它的叶子结点数"?
BinTree;\/\/二叉树类型 int Node(BinTree T){ \/\/算结点数 if(T)return Node(T->lchild )+ Node (T->rchild )+1;else return 0;} int Leaf(BinTree T){ if(T){ if ((T->lchild==NULL )&&(T->rchild==NULL ))return 1;else return Leaf(T->lchild )+Leaf (T->rchild );} ...

C语言二叉树的深度指什么?怎么求?
1.如果根节点为空,则深度为0,返回0,递归的出口。2.如果根节点不为空,那么深度至少为1,然后我们求他们左右子树的深度,3.比较左右子树深度值,返回较大的那一个 4.通过递归调用 include<iostream>#include<stdlib.h>using namespace std;struct BinaryTreeNode{ int m_nValue; BinaryTree...

相似回答