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