关于统计二叉树中度数为一的结点个数算法很不理解 求高手赐教!!! 详细点
Posted
tags:
篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了关于统计二叉树中度数为一的结点个数算法很不理解 求高手赐教!!! 详细点相关的知识,希望对你有一定的参考价值。
统计二叉树中度为1的结点个数。
template <class Type>
int BinaryTree<Type> :: Degrees1 ( BinTreeNode<Type> * t ) const
if ( t == NULL ) return 0;
if ( t->leftChild != NULL && t->rightChild == NULL ||
t->leftChild == NULL && t->rightChild != NULL ) return 1;//我非常不理解这里 既然都返回1了,那后面继续递归,如果还有度数为一的结点那怎么办呢,为什么没有设定一个count统计数目呢 这样子递归能实现么???
return Degrees1 ( t->leftChild, k ) + Degrees1 ( t->rightChild, k );
有两个函数数:Degrees1 ( BinTreeNode<Type> * t )
及:Degrees1 ( t->leftChild, k )
你分别看看这两个函数的实现应该能明白 参考技术A 有这么一种可能,一直都是度数为1的结点二叉树一直到底,所以还需要递归,只有递归到底才能实现所有的度数为1的二叉树的结点个数的统计啊~
分别统计二叉树中树叶和度为1的结点个数.
分别统计二叉树中树叶和度为1的结点个数.
计算二叉树的高度
int LeafCount(BTree T)
if (!T) return 0;
else if (!T->lchild && !T->rchild)
return 1;
else
return LeafCount(T->lchild) + LeafCount(T->rchild);
void OneDegree(BTree T,int &count)
if (!T || (!T->lchild && !T->rchild)) return;
else if (T->lchild && !T->rchild)
++count;
OneDegree(T->lchild,count);
else if (!T->lchild && T->rchild)
++count;
OneDegree(T->rchild,count);
else
OneDegree(T->lchild,count);
OneDegree(T->rchild,count);
int TreeDepth(BTree T)
if (!T) return 0;
else
return (TreeDepth(T->lchild) > TreeDepth(T->rchild) ? TreeDepth(T->lchild) : TreeDepth(T->rchild)) + 1;
参考技术A 结点个数=2*高度 -1
以上是关于关于统计二叉树中度数为一的结点个数算法很不理解 求高手赐教!!! 详细点的主要内容,如果未能解决你的问题,请参考以下文章