数的函数,参数改为根节点的右孩子 5 :返回根节点的左右字数的结点数之和 B. 代码详细分析: template <class T> int BiTree<T>::NodeCount(Node<T> *R) { if (R==NULL) return 0; else { int m=NodeCount(R->lch); }} int n=NodeCount(R->rch); return m+n+1; }123 2.3 其他对二叉树的操作上, 前序遍历与中序遍历采用了非递归算法, 后续遍历, 层序遍历, 求二叉树深度, 求二叉树叶子结点数, 求二叉树结点数等函数采用了递归算法。为了提高运算性能, 可以将它们改为非递归算法来实现,例如,后续遍历的非递归算法如下: template <class T> void BiTreee<T>::Postorder (Node<T> *R) { Stack<SNode<T>*> S; SNode<T> *p; do{ while (R!=NULL) { p->ptr=R; p->tag=1 ; S.Push(p); R=R->lch; } while(!S.IsEmpty() && S.GetTop()->tag==2) { p=S.Pop(); cout<<p->ptr->data; } if(!S.IsEmpty()) { S.GetTop()->tag=2; R=S.GetTop()->ptr->rch; }} while(!S.IsEmpty()) 3. 程序运行结果主函数流程图如下: 结束开始初始化字符型数组,作为赋值准备初始化一个对象利用 creat 函数初始化一个二叉树,参数为初始化的字符型数组执行前序,后序,中序,层序遍历,输出遍历结果执行求结点数,叶子节点数,二叉树深度,路径函数执行查找数中结点元素函数程序运行截图如下: