二叉树
文章平均质量分 53
Celine-Coding
Keep moving, stay kind.
展开
-
Leetcode105. 从前序和中序遍历构造二叉树 -- 递归
题目解题思路先序遍历顺序:根左右;中序遍历顺序:左根右;根据先序得到根节点位置;根据根节点位置 结合中序,得到左右子树;先序遍历、中序遍历中左右子树个数相同,可求出先序、中序中左右子树的下标;利用 map 求出根节点的位置,map始终存的是中序遍历元素(包括 leetcode106也是);画图!画图!画图!画图可清楚的看出来左右子树的下标。画图求左右子树下标根据左右子树在先序和中序遍历中的个数相同,得出:x - (preLeft + 1) = pIndex - 1 - inLe原创 2022-03-20 18:49:27 · 542 阅读 · 0 评论 -
Leetcode104. 二叉树的最大深度 -- JavaScript版
二叉树的概念:树中每个节点最多只能有两个子节点。树的一些常用操作,深度优先遍历DFS、广度(宽度)优先遍历BFS,二叉树的先、中、后序遍历。题目描述思路这道题要求找出数的最大深度,优先考虑使用DFS,DFS可以对根节点以及根结点的children进行深度查找,在查找的过程中,记录每个节点的层级,找到最大的即可。时间复杂度为 O(n),n为整棵树的节点树,因为每个节点都遍历到;空间复杂度为 O(n),n为最大深度。为什么空间复杂度是O(n),而不是O(1)呢?因为code中存在函数里面调用函原创 2022-03-03 14:52:48 · 736 阅读 · 0 评论 -
剑指 offer28. 对称的二叉树 -- JavaScript解法
题目描述解题思路使用BFS,层层遍历,判断节点是否相等。镜像对称,说明 左子树的左节点等于右子树的右节点,且左子树的右节点等于右子树的左节点。解题步骤root为null,直接返回true;构建checkSame(left,right)方法,传入根节点的左右子树;若左右子树都为null,说明对称,返回true;若左右子树都存在,则需要:root值相等 && 递归左右子树的child(child也需要满足镜像)Codingvar isSymmetric = functi原创 2022-02-25 18:54:37 · 272 阅读 · 0 评论