二叉树的结构:

typedef struct BTNode
{ElemType data;struct BTNode *lchild, *rchild;
} BTNode;

递归算法求二叉树的深度depth:

这个递归算法求二叉树的深度其实和遍历二叉树的后序遍历算法差不多。

int BTNodeDepth(BTNode *b)
{int lchildDepth, rchildDepth;if (b == NULL) return 0;else {lchildDepth = BTNodeDepth(b->lchild);//求左子树的高度为lchildDepthrchildDepth = BTNodeDepth(b->rchild);//求右子树的高度为rchildDepthreturn (lchildDepht > rchildDepth) ? (lchildDepth + 1) : (rchildDepth + 1);//取大者}
}

非递归算法求二叉树的深度:

其实非递归算法求二叉树的深度就是使用二叉树的层次遍历的算法。

int BTNodeDepth(BTNode *b)
{BTNode *p = NULL, queue[MaxSize];int front, rear;front = rear = -1;int level = 1;int last = front;while (front != rear) {p = queue[++front];if (l->lchild)queue[rear++] = p->lchild;if (l->rchild)queue[rear++] = p->rchild;if (last == front) {level++;last = rear;}}return level;
}

树与二叉树——递归算法、非递归算法求二叉树的深度相关推荐

  1. 数据结构——二叉树的非递归算法

    二叉树的非递归算法 先序遍历非递归算法1 先序遍历非递归算法2 非递归交换左右孩子算法 使用栈来实现二叉树的非递归算法 栈的基本算法 #include<stdio.h> #include& ...

  2. (※)中序遍历二叉树的非递归算法

    在此之前,我们已经学习了中序遍历二叉树的递归算法,相信大家已经将其牢牢掌握了. 除了使用递归思想作为求解问题的钥匙,还可以借助栈来以非递归方式实现该问题的求解. 首先,我们要讨论存储二叉树结点信息的栈 ...

  3. java已知一个二叉树_大牛带你学 | 由二叉树的遍历序列求二叉树结构的解题方法归纳...

    前言 二叉树章节 属于数据结构考察的三大重点章节(线性表.树.图)之一,不管是在自命题院校考察和408统考都是考察频次很高的考点.今天,大牛学长就来为各位同学总结归纳一个二叉树知识考察中的常见题型的解 ...

  4. 树与二叉树——后序遍历二叉树的非递归算法

    算法思想:后序非递归遍历二叉树是先访问左子树,再访问右子树,最后访问根节点. ①若根节点有左孩子,则左孩子以此入栈,直到左孩子为空,然后读取栈顶元素,若其右孩子不为空且未被访问过,则对右子树执行①.否 ...

  5. 二叉树的非递归算法(C++实现)

    接着上面一篇博客,我们开始叙述有关二叉树的非递归遍历的实现. 这里我们附上上一篇blog的链接:https://blog.csdn.net/weixin_36997518/article/detail ...

  6. 遍历二叉树的非递归算法

    编写的方法:根据树中结点的遍历规律及顺序直接写出其非递归算法. 先序非递归算法 [思路] 假设:T是要遍历树的根指针,若T != NULL 对于非递归算法,引入栈模拟递归工作栈,初始时栈为空. 问题: ...

  7. 创建二叉树的非递归算法实现

    非递归创建二叉树(中序)算法核心思路: 1)从根节点到左子树的叶子节点(创建节点.节点压栈): 2)记录每个节点的状态分三种情况:初始状态.左子树建立完成状态.右子树建立完成状态: 3)左右子树创建完 ...

  8. 二叉树的进阶操作---(求二叉树中所有结点个数,求叶子结点个数,求第k层结点个数;在二叉树中查找某一结点;层序遍历;判断是否为完全二叉树)

    typedef struct TreeNode {struct TreeNode *left;struct TreeNode *right;char val; }TreeNode;typedef st ...

  9. python非递归前序遍历二叉树_Python非递归实现二叉树的后续遍历

    leetcode 145. Binary Tree Postorder Traversal 思路一: 使用一个栈stack保存经过的根结点,另一个栈flag保存每个结点的右子树是否遍历: 如果根结点存 ...

  10. java 非递归求二叉树高度_非递归算法实现二叉树高度

    思路: 嘻嘻,请读者自己手动模拟.博主这里不知道怎么说. 拓展: 该算法思路也适用于 (1)每层的结点个数 (2)树的最大宽度 (3)节点位于某一层 int height(BiTree T){ if( ...

最新文章

  1. 004_列表list操作
  2. C语言外部函数与内部函数
  3. EasyCriteria –使用JPA Criteria的简便方法
  4. 人工智能这么火,可你真的会用 TensorFlow?
  5. 903计算机技术综合基础,北大903计算机技术综合基础考研真题、资料、参考书
  6. c语言C的ascii码是多少,c的ascii码值是多少
  7. 查看浏览器保存的密码
  8. Codesys学习调试笔记2
  9. 报表热切换是什么意思?如何做到?
  10. BCJC:30: 计算机术语:读和写操作
  11. 第二块显示屏(扩展屏)左右调整
  12. Python Qt6快速入门-嵌入PyQtGraph图表
  13. mysql如何查看事务日记_详解 Mysql 事务和Mysql 日志
  14. mysql不锁表加索引
  15. 声音频率分类(二十一)
  16. 机器外接屏双屏显示的问题
  17. 【实用】JavaScript中Video使用详解过程(多视频列表循环播放)
  18. The beatles-Yesterday
  19. 网站建设入门技术导航
  20. Android MTK 6750 系统语言与输入法

热门文章

  1. 刷题学习—算法思想(动态规划下)
  2. 一枚程序猿的MacBook M1详细体验报告
  3. 红外远程抄表无线 远程智能读表 国网电表非侵入式采集
  4. 不合格机器人工程讲师如何坦然面对失败
  5. python实现整数因式分解
  6. 将B站视频保存为MP4格式
  7. ATK BLE 01低功耗蓝牙配对调试经验
  8. 我的世界基岩版开服教程
  9. 熟读这5个开源项目就是合格的GO语言工程师
  10. 使用NIO的server编程框架