非递归算法求二叉树叶子节点数
Posted
tags:
篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了非递归算法求二叉树叶子节点数相关的知识,希望对你有一定的参考价值。
参考技术A int count(struct Node *root)int n=0;
stack s;
if(root == null) return 0;
s.push(root);
while(!s.empty())
p = s.pop();
if(p->left == null && p->right==null)
n++;
if(p->left != null)
s.push(p->left);
if(p->right != null)
s.push(p->right);
return n;
二叉树的相关算法
1.求二叉树所有的节点数
2.求二叉树所有的叶子节点数
3.求二叉树最小值的节点值
4.求二叉树所有节点值之和
5.求二叉树节点值为x的个数
6.删除二叉树
//求二叉树所有的节点数 int nodes(BTNode *r){ if(r==0) return 0; else return nodes(r->lchild)+nodes(r->rchild)+1; } //求二叉树所有的叶子节点数 int leafNodes(BTNode *r){ if(r==NULL) return 0; else if(r->lchild==NULL&&r->rchild==NULL) return 1; else return leafNodes(r->lchild)+leafNodes(r->rchild); } //求二叉树最小值的节点值 void minNode(BTNode *r,elemType &min){ if(r!=NULL){ if(r->data<min) min=r->data; minNode(r->lchild,min); minNode(r->rchild,min); } } //求所有节点值之和 int findSum(BTNode *r){ if(r==NULL) return 0; else return r->data+findSum(r->lchild)+findSum(r->rchild); } //求二叉树中节点值为x的节点个数 int findCount(BTNode *r,int x){ if(r==NULL) return 0; if(x==r->data) return 1+findCount(r->lchild,x)+findCount(r->rchild,x); else return findCount(r->lchild,x)+findCount(r->rchild,x); } //删除二叉树 void delTree(BTNode *r){ if(r!=NULL){ delTree(r->lchild); delTree(r->rchild); free(r); } }
以上是关于非递归算法求二叉树叶子节点数的主要内容,如果未能解决你的问题,请参考以下文章