树——如何实现二叉树的深度?

考察点:二叉树

参考回答: 实现二叉树的深度方式有两种,递归以及非递归。
①递归实现: 为了求树的深度,可以先求其左子树的深度和右子树的深度,可以用递归实现,递归的出口 就是节点为空。返回值为 0;
②非递归实现: 利用层次遍历的算法,设置变量 level 记录当前节点所在的层数,设置变量 last 指向当前 层的最后一个节点,当处理完当前层的最后一个节点,让 level 指向+1 操作。设置变量 cur 记 录当前层已经访问的节点的个数,当 cur 等于 last 时,表示该层访问结束。 层次遍历在求树的宽度、输出某一层节点,某一层节点个数,每一层节点个数都可以采取类 似的算法。 树的宽度:在树的深度算法基础上,加一个记录访问过的层节点个数最多的变量 max,在访 问每层前 max 与 last 比较,如果 max 比较大,max 不变,如果 max 小于 last,把 last 赋值给 max;

理解:对于求树操作,因为每个节点,只会有左子树和右子树,所以建议采取递归算法实现,思路清晰,而且代码简洁。求树的深度与求树中任意两个节点的最大距离类似。

题目来自:牛客网

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值