二叉树
中序遍历的定义:
按照访问左子树——根节点——右子树的方式遍历这棵树,而在访问左子树或者右子树的时候我们按照同样的方式遍历,直到遍历完整棵树
root.left--左子树
root.right--右子树
root.val--当前节点的值
输入:root = [1,null,2,3] 输出:[1,3,2]
/** * @param {TreeNode} root * @return {number[]} */ var inorderTraversal = function (root, array = []) { if (root) { inorderTraversal(root.left, array) array.push(root.val) inorderTraversal(root.right, array) } return array }
前序遍历的定义:
按照访问根节点——左子树——右子树的方式遍历这棵树
后序遍历的定义:
按照访问左子树——右子树——根节点的方式遍历这棵树
平衡二叉树:一个二叉树每个节点 的左右两个子树的高度差的绝对值不超过 1 。
这个是平衡二叉树
这个不是平衡二叉树
是因为根节点1的左右子树的深度,分别是3和1,差值大于1
二叉树的最小深度
最小深度是从根节点到最近叶子节点的最短路径上的节点数量。
说明:叶子节点是指没有子节点的节点。
如上图,最小深度就是根节点3到最近叶子节点9的深度,即节点9深度为1,最小深度为1+1=2
【推荐】国内首个AI IDE,深度理解中文开发场景,立即下载体验Trae
【推荐】编程新体验,更懂你的AI,立即体验豆包MarsCode编程助手
【推荐】抖音旗下AI助手豆包,你的智能百科全书,全免费不限次数
【推荐】轻量又高性能的 SSH 工具 IShell:AI 加持,快人一步
· Manus爆火,是硬核还是营销?
· 终于写完轮子一部分:tcp代理 了,记录一下
· 别再用vector<bool>了!Google高级工程师:这可能是STL最大的设计失误
· 单元测试从入门到精通
· 震惊!C++程序真的从main开始吗?99%的程序员都答错了