做网站卖酒,说说seo论坛,手机参数对比的网站,网络运维面试二叉树的理论基础
代码随想录 (programmercarl.com)#xff1a;二叉树的种类、存储方式、遍历方式、定义方式
二叉树的遍历方式
深度优先遍历 代码随想录阅读笔记-二叉树【递归遍历】-CSDN博客#xff1a;递归三部曲初次亮相代码随想录阅读笔记-二叉树【迭代遍历】-CSDN博…二叉树的理论基础
代码随想录 (programmercarl.com)二叉树的种类、存储方式、遍历方式、定义方式
二叉树的遍历方式
深度优先遍历 代码随想录阅读笔记-二叉树【递归遍历】-CSDN博客递归三部曲初次亮相代码随想录阅读笔记-二叉树【迭代遍历】-CSDN博客通过栈模拟递归代码随想录阅读笔记-二叉树【统一迭代法】-CSDN博客广度优先遍历 代码随想录阅读笔记-二叉树【层序遍历】-CSDN博客通过队列模拟
求二叉树的属性
代码随想录阅读笔记-二叉树【对称二叉树】-CSDN博客 递归后序比较的是根节点的左子树与右子树是不是相互翻转迭代使用队列/栈将两个节点顺序放入容器中进行比较代码随想录阅读笔记-二叉树【最大深度】-CSDN博客 递归后序求根节点最大高度就是最大深度通过递归函数的返回值做计算树的高度迭代层序遍历代码随想录阅读笔记-二叉树【最小深度】-CSDN博客 递归后序求根节点最小高度就是最小深度注意最小深度的定义迭代层序遍历代码随想录阅读笔记-二叉树【完全二叉树节点个数】-CSDN博客 递归后序通过递归函数的返回值计算节点数量迭代层序遍历代码随想录阅读笔记-二叉树【平衡二叉树】-CSDN博客 递归后序注意后序求高度和前序求深度递归过程判断高度差迭代效率很低不推荐代码随想录阅读笔记-二叉树【二叉树的所有路径】-CSDN博客 递归前序方便让父节点指向子节点涉及回溯处理根节点到叶子的所有路径迭代一个栈模拟递归一个栈来存放对应的遍历路径代码随想录阅读笔记-二叉树【左叶子之和】-CSDN博客 递归后序必须三层约束条件才能判断是否是左叶子。迭代直接模拟后序遍历代码随想录阅读笔记-二叉树【找树左下角的值】-CSDN博客 递归顺序无所谓优先左孩子搜索同时找深度最大的叶子节点。迭代层序遍历找最后一行最左边代码随想录阅读笔记-二叉树【路径总和】-CSDN博客 递归顺序无所谓递归函数返回值为bool类型是为了搜索一条边没有返回值是搜索整棵树。迭代栈里元素不仅要记录节点指针还要记录从头结点到该节点的路径数值总和
二叉树的修改与构造
代码随想录阅读笔记-二叉树【翻转二叉树】-CSDN博客 递归前序交换左右孩子迭代直接模拟前序遍历代码随想录-二叉树【从中序与后序遍历序列构造二叉树】-CSDN博客 递归前序重点在于找分割点分左右区间构造迭代比较复杂意义不大代码随想录阅读笔记-二叉树【最大二叉树】-CSDN博客 递归前序分割点为数组最大值分左右区间构造迭代比较复杂意义不大代码随想录阅读笔记-二叉树【合并二叉树】-CSDN博客 递归前序同时操作两个树的节点注意合并的规则迭代使用队列类似层序遍历
求二叉搜索树的属性 代码随想录阅读笔记-二叉树【二叉搜索树中的搜索】-CSDN博客 递归二叉搜索树的递归是有方向的迭代因为有方向所以迭代法很简单 代码随想录阅读笔记-二叉树【验证二叉搜索树】-CSDN博客 递归中序相当于变成了判断一个序列是不是递增的迭代模拟中序逻辑相同 代码随想录阅读笔记-二叉树【二叉搜索树的最小绝对差】-CSDN博客 递归中序双指针操作迭代模拟中序逻辑相同 代码随想录阅读笔记-二叉树【二叉搜索树中的众数】-CSDN博客 递归中序清空结果集的技巧遍历一遍便可求众数集合 代码随想录阅读笔记-二叉树【二叉搜索树转换为累加树】-CSDN博客 递归中序双指针操作累加 迭代模拟中序逻辑相同
二叉树公共祖先问题
代码随想录阅读笔记-二叉树【二叉树的最近公共祖先】-CSDN博客 递归后序回溯找到左子树出现目标值右子树节点目标值的节点。迭代不适合模拟回溯代码随想录阅读笔记-二叉树【二叉搜索树的最近公共祖先】-CSDN博客 递归顺序无所谓如果节点的数值在目标区间就是最近公共祖先迭代按序遍历
二叉搜索树的修改与构造
代码随想录阅读笔记-二叉树【二叉搜索树的插入】-CSDN博客 递归顺序无所谓通过递归函数返回值添加节点迭代按序遍历需要记录插入父节点这样才能做插入操作代码随想录阅读笔记-二叉树【删除二叉搜索树节点】-CSDN博客 递归前序想清楚删除非叶子节点的情况迭代有序遍历较复杂代码随想录阅读笔记-二叉树【修剪二叉搜索树】-CSDN博客 递归前序通过递归函数返回值删除节点迭代有序遍历较复杂代码随想录阅读笔记-二叉树【将有序数组转换为二叉搜索树】-CSDN博客 递归前序数组中间节点分割迭代较复杂通过三个队列来模拟
总结
在二叉树题目选择什么遍历顺序是不少同学头疼的事情我们做了这么多二叉树的题目了给大家大体分分类。 涉及到二叉树的构造无论普通二叉树还是二叉搜索树一定前序都是先构造中节点。 求普通二叉树的属性一般是后序一般要通过递归函数的返回值做计算。 求二叉搜索树的属性一定是中序了要不白瞎了有序性了。
注意在普通二叉树的属性中我用的是一般为后序例如单纯求深度就用前序代码随想录阅读笔记-二叉树【二叉树的所有路径】-CSDN博客也用了前序这是为了方便让父节点指向子节点。
所以求普通二叉树的属性还是要具体问题具体分析。
二叉树专题汇聚为一张图 这个图是从 代码随想录知识星球引用总结的非常好分享给大家。