二叉树中叶子节点的个数(非递归)
来源:互联网 发布:济南矩阵直销软件 编辑:程序博客网 时间:2024/04/28 05:39
算法思想:在遍历二叉树时,判断当前访问的节点是不是叶子节点,然后对叶子节点求和即可。(前序、中序、后序、按层遍历均可)
以”前序”为例,代码中有详细注释,不再具体阐述,实现如下:
#include <iostream>#define MAXSIZE 1000typedef struct node{ char data; struct node *lchild; struct node *rchild;}BiNode, *BiTree;// 先序建立二叉树 (输入时,按先序次序输入二叉树中结点的值,以 # 字符表示空树)BiTree createBiTree(){ BiTree T; char c; scanf("%c", &c); if (c == '#') T = NULL; else { T = new BiNode; // 或 T = (BiTree)malloc(sizeof(BiNode)); T->data = c; T->lchild = createBiTree(); T->rchild = createBiTree(); } return T;}// 前序遍历void PreOrderTraverse(BiTree T){ if (T) { printf("%c\n", T->data); PreOrderTraverse(T->lchild); PreOrderTraverse(T->rchild); }}// 非递归,求二叉树中叶子节点的个数int leaf_num(BiTree T){ int top = -1; // 栈为空 int count = 0; BiTree s[MAXSIZE]; // 申请一个栈空间 while (T != NULL || top != -1) // 当前树的根节点不为空 或 栈不为空(说明需要继续遍历) { while (T != NULL) // 当前树的根节点不为空 { if(T->lchild == NULL && T->rchild == NULL) // 若当前根节点的左右子树都为空,则是叶子节点 count++; s[++top] = T; // 先 ++top,然后将当前的根节点入栈 T = T->lchild; // 然后访问当前根节点的左子树 } if (top != -1) // 若此时栈不为空(此时跳出了上面的while(T != NULL),说明了当前根节点的左子树为空) { T = s[top--]; // 先获取当前的根节点(即让当前的根节点出栈),然后 top--; T = T->rchild; // 然后访问当前根节点的右子树 } } return count;}int main(int argc, const char * argv[]) { BiTree T = createBiTree(); // 建立 PreOrderTraverse(T); // 输出 int num = leaf_num(T); printf("\n%d\n", num); return 0;}
1 0
- 二叉树中叶子节点的个数(非递归)
- 二叉树中叶子节点的个数(递归)
- 二叉树中叶子节点的个数
- 分别采用递归和非递归方式编写两个函数,求一棵二叉树中叶子节点个数
- 编写递归算法 计算二叉树中叶子节点的个数
- 统计二叉树中叶子节点的个数
- 求二叉树中叶子节点个数,总的节点个数,第K层的节点个数
- 二叉树3(统计二叉树中叶子节点的个数)
- 二叉树中叶子节点的个数第K层的节点个数
- 二叉树(7)----求二叉树叶子节点个数,递归和非递归
- 二叉树的节点个数和深度(非递归)
- 求二叉树中叶子结点的个数
- 求二叉树中叶子结点的个数
- 输出二叉树中叶子结点的个数
- C++算法之 求二叉树中叶子节点的个数 与 判断两棵二叉树是否结构相同
- 计算二叉树中叶子节点的数目
- 统计二叉树中叶子节点的数目
- 递归和非递归实现计算二叉树叶子节点的个数
- SQL的主键和外键约束
- 编程小练习
- hadoop windows 客户端
- Acdream 1219 The Towers of Hanoi Revisited(递归汉诺塔问题)
- 设计模式无招胜有招之设计目的
- 二叉树中叶子节点的个数(非递归)
- 常用算法原理
- Maven 最佳实践:划分模块
- mariadb-5.5.48-win32 XP下最后一个版本
- 编程小练习
- Spring AOP 实现原理与 CGLIB 应用
- CentOS环境PHP下安装memcache扩展
- java回忆录(3)—ThreadLocal解决线程资源共享问题
- **发现sql去掉最高分和最低分没多少人写,那我来写一篇**