
二叉树+多叉树
遍历,构造
answer_yym
且随疾风前行
展开
-
Z字形打印二叉树
【代码】Z字形打印二叉树。原创 2024-05-27 10:35:01 · 222 阅读 · 0 评论 -
二叉搜索树的插入操作
1、描述给定二叉搜索树(BST)的根节点和要插入树中的值,将值插入二叉搜索树。 返回插入后二叉搜索树的根节点。 输入数据 保证 ,新值和原始二叉搜索树中的任意节点值都不同。注意,可能存在多种有效的插入方式,只要树在插入后仍保持为二叉搜索树即可。 你可以返回 任意有效的结果来源:力扣(LeetCode)链接:https://leetcode-cn.com/problems/insert-into-a-binary-search-tree著作权归领扣网络所有。商业转载请联系官方授权,非商业转载请注明出原创 2021-10-19 22:41:19 · 823 阅读 · 0 评论 -
判断完全二叉树
1、描述判断完全二叉树3、思路通过层序遍历,定义一个标记,如果遇到nullptr就打个标记,下一次再遇到这个标记的时候就说明不是完全二叉树了。因为遇到nullptr之后,后边都不应该有元素了。6、code/** * Definition for a binary tree node. * struct TreeNode { * int val; * TreeNode *left; * TreeNode *right; * TreeNode() : val原创 2021-09-18 12:44:15 · 126 阅读 · 0 评论 -
获取二叉树的最大节点和最小节点的距离
文章目录1、描述2、关键字3、思路6、code1、描述如题:每个节点有一个权值,找到最大权值节点,到最小权值节点的距离,一个算1个2、关键字求距离,最大,最小节点3、思路首先遍历所有,求出最大和最小的节点,然后寻找最近的公共父节点,然后从父节点两个节点的值,相加6、codeclass Tree {public: int minleaf = 100000; int maxleaf = 0; void getmaxmin(TreeNode * root) { // 获取最小,最大原创 2021-09-13 21:52:01 · 415 阅读 · 0 评论 -
判断子树结构
文章目录1、描述2、关键字3、思路4、notes5、复杂度6、code1、描述输入两棵二叉树A和B,判断B是不是A的子结构。(约定空树不是任意一个树的子结构)B是A的子结构, 即 A中有出现和B相同的结构和节点值。例如:给定的树 A: 3/ \4 5/ 1 2给定的树 B:4/1返回 true,因为 B 与 A 的一个子树拥有相同的结构和节点值。示例 1:输入:A = [1,2,3], B = [3,1]输出:false来源:力扣(LeetCode)链接:原创 2021-09-02 09:57:07 · 109 阅读 · 0 评论 -
二叉树中和为某个数的路径
文章目录1、描述2、关键字3、思路4、notes5、复杂度6、code1、描述输入一棵二叉树和一个整数,打印出二叉树中节点值的和为输入整数的所有路径。从树的根节点开始往下一直到叶节点所经过的节点形成一条路径。示例:给定如下二叉树,以及目标和 target = 22, 5 / \ 4 8 / / \ 11 13 4 / \ / \ 7 2 5 1来源:力扣(LeetCo原创 2021-09-01 20:39:17 · 116 阅读 · 0 评论 -
二叉树的最大求和路径
1、描述路径 被定义为一条从树中任意节点出发,沿父节点-子节点连接,达到任意节点的序列。同一个节点在一条路径序列中 至多出现一次 。该路径 至少包含一个 节点,且不一定经过根节点。路径和 是路径中各节点值的总和。给你一个二叉树的根节点 root ,返回其 最大路径和 。来源:力扣(LeetCode)链接:https://leetcode-cn.com/problems/binary-tree-maximum-path-sum著作权归领扣网络所有。商业转载请联系官方授权,非商业转载请注明出处。6原创 2021-08-30 15:43:06 · 637 阅读 · 0 评论 -
二叉树遍历(递归前中后+非递归前中后+层序)
1、二叉树递归遍历1.1、先序(根左右)链接/** * Definition for a binary tree node. * struct TreeNode { * int val; * TreeNode *left; * TreeNode *right; * TreeNode() : val(0), left(nullptr), right(nullptr) {} * TreeNode(int x) : val(x), left(nullpt原创 2021-08-18 10:02:50 · 122 阅读 · 0 评论 -
二叉搜索树的后序遍历序列
文章目录1、描述2、关键字3、思路4、notes5、复杂度6、code1、描述输入一个整数数组,判断该数组是不是某二叉搜索树的后序遍历结果。如果是则返回 true,否则返回 false。假设输入的数组的任意两个数字都互不相同。参考以下这颗二叉搜索树: 5/ \2 6/ 1 3示例 1:输入: [1,6,3,2,5]输出: false示例 2:输入: [1,3,2,6,5]输出: true来源:力扣(LeetCode)链接著作权归领扣网络所有。商业转载请联系官方授权原创 2021-08-01 22:44:09 · 106 阅读 · 0 评论 -
二叉树中第二小的节点
文章目录1、描述2、关键字3、思路4、notes5、复杂度6、code1、描述给定一个非空特殊的二叉树,每个节点都是正数,并且每个节点的子节点数量只能为 2 或 0。如果一个节点有两个子节点的话,那么该节点的值等于两个子节点中较小的一个。更正式地说,root.val = min(root.left.val, root.right.val) 总成立。给出这样的一个二叉树,你需要输出所有节点中的第二小的值。如果第二小的值不存在的话,输出 -1 。来源:力扣(LeetCode)链接著作权归领扣网络所原创 2021-07-27 10:22:03 · 192 阅读 · 0 评论 -
重建二叉树
文章目录1、描述2、关键字3、思路4、notes5、复杂度6、code1、描述输入某二叉树的前序遍历和中序遍历的结果,请构建该二叉树并返回其根节点。假设输入的前序遍历和中序遍历的结果中都不含重复的数字。链接2、关键字二叉树,重建,前序和中序,没有重复的数字,3、思路1、根据前序知道第一个元素是根,2、根据根节点去中序遍历序列中分出左右子树,3、根据第2步中分出的两部分,再看前序遍历寻找左右子树的根节点,形成递归把前序遍历搞成自己内部的重开一个vector,把中序遍历搞成一个字典,方便原创 2021-07-13 19:49:15 · 93 阅读 · 0 评论 -
二叉搜索树构建双向链表
文章目录1、描述2、关键字3、思路4、notes5、code1、描述输入一棵二叉搜索树,将该二叉搜索树转换成一个排序的循环双向链表。要求不能创建任何新的节点,只能调整树中节点指针的指向。为了让您更好地理解问题,以下面的二叉搜索树为例来源:力扣(LeetCode)链接著作权归领扣网络所有。商业转载请联系官方授权,非商业转载请注明出处。2、关键字二叉搜索树,双向链表3、思路有序,需要中序遍历,想到中序遍历的递归版本。如果为空就返回,第一步:调用左子树第二步:处理第3步:调用右子树//原创 2021-06-13 22:06:51 · 204 阅读 · 0 评论 -
无序二叉树最近公共祖先,不太会!!!
文章目录1、描述2、关键字3、思路4、notes5、复杂度6、code1、描述给定一个二叉树, 找到该树中两个指定节点的最近公共祖先。百度百科中最近公共祖先的定义为:“对于有根树 T 的两个结点 p、q,最近公共祖先表示为一个结点 x,满足 x 是 p、q 的祖先且 x 的深度尽可能大(一个节点也可以是它自己的祖先)。来源:力扣(LeetCode)链接著作权归领扣网络所有。商业转载请联系官方授权,非商业转载请注明出处。2、关键字二叉树,公共祖先二叉搜索树的最近公共祖先3、思路后序遍历,原创 2021-06-02 19:23:39 · 113 阅读 · 0 评论 -
二叉搜索树的最近公共祖先剑指 Offer 68 - I
1、题目描述给定一个二叉搜索树, 找到该树中两个指定节点的最近公共祖先。百度百科中最近公共祖先的定义为:“对于有根树 T 的两个结点 p、q,最近公共祖先表示为一个结点 x,满足 x 是 p、q 的祖先且 x 的深度尽可能大(一个节点也可以是它自己的祖先)。”例如,给定如下二叉搜索树: root = [6,2,8,0,4,7,9,null,null,3,5]来源:力扣(LeetCode)链接:https://leetcode-cn.com/problems/er-cha-sou-suo-shu-原创 2020-08-21 22:55:06 · 152 阅读 · 0 评论 -
判断二叉树是否自身对称
文章目录1.描述2.关键字3.思路4.notes5.复杂度6.code1.描述请实现一个函数,用来判断一棵二叉树是不是对称的。如果一棵二叉树和它的镜像一样,那么它是对称的。例如,二叉树 [1,2,2,3,4,4,3] 是对称的。2.关键字二叉树,对称,3.思路递归,判断,函数重载,左右两个孩子对称相比较4.notes再写一个左右孩子对称性相比较的函数,左孩子的左孩子,和右孩子的右孩子相比较,5.复杂度时间O(N),n是节点个数空间:O(n)退化成链表6.code/** * De原创 2021-05-24 19:44:16 · 83 阅读 · 0 评论 -
求二叉树的最大、最小深度
1、描述输入一棵二叉树的根节点,求该树的深度。从根节点到叶节点依次经过的节点(含根、叶节点)形成树的一条路径,最长路径的长度为树的深度。例如:给定二叉树 [3,9,20,null,null,15,7],3/ 9 20/ 15 7返回它的最大深度 3来源:力扣(LeetCode)链接:https://leetcode-cn.com/problems/er-cha-shu-de-shen-du-lcof著作权归领扣网络所有。商业转载请联系官方授权,非商业转载请注明出处。2、关原创 2021-05-21 17:54:02 · 223 阅读 · 0 评论 -
二叉搜索树的迭代器
文章目录1、描述2、关键字3、思路4、notes5、复杂度6、code1、描述实现一个二叉搜索树迭代器类BSTIterator ,表示一个按中序遍历二叉搜索树(BST)的迭代器:BSTIterator(TreeNode root) 初始化 BSTIterator 类的一个对象。BST 的根节点 root 会作为构造函数的一部分给出。指针应初始化为一个不存在于 BST 中的数字,且该数字小于 BST 中的任何元素。boolean hasNext() 如果向指针右侧遍历存在数字,则返回 true ;否则原创 2021-04-20 09:10:09 · 318 阅读 · 0 评论 -
二叉搜索树变成链表
1、描述二叉树数据结构TreeNode可用来表示单向链表(其中left置空,right为下一个链表节点)。实现一个方法,把二叉搜索树转换为单向链表,要求依然符合二叉搜索树的性质,转换操作应是原址的,也就是在原始的二叉搜索树上直接修改。返回转换后的单向链表的头节点。注意:本题相对原题稍作改动示例:输入: [4,2,5,1,3,null,6,0]输出: [0,null,1,null,2,null,3,null,4,null,5,null,6]来源:力扣(LeetCode)链接:https://l原创 2021-03-29 22:05:27 · 755 阅读 · 0 评论 -
二叉树的坡度01
1、描述给定一个二叉树,计算 整个树 的坡度 。一个树的 节点的坡度 定义即为,该节点左子树的节点之和和右子树节点之和的 差的绝对值 。如果没有左子树的话,左子树的节点之和为 0 ;没有右子树的话也是一样。空结点的坡度是 0 。整个树 的坡度就是其所有节点的坡度之和。来源力扣(LeetCode链接著作权归领扣网络所有。商业转载请联系官方授权,非商业转载请注明出处。2、关键字二叉树,左子树右子树权值做差,每层累加3、思路递归,递归函数返回值不是void而是int,递归函数返回当前节点和左右子原创 2021-03-29 19:43:22 · 132 阅读 · 0 评论 -
判断二叉树的范围,
文章目录1、描述2、关键字3、思路4、notes5、复杂度6、code1、描述给定二叉搜索树的根结点 root,返回值位于范围 [low, high] 之间的所有结点的值的和。2、关键字二叉搜索树、区间3、思路dfs,先根遍历,一层一层比较当前值,递归,先写当前val,再判断左右子树4、notes递归函数,返回值写成void,然后通过一个全局变量保存结果2、给出的主函数,不能重定义全局变量,不然不是同一个变量,没有结果5、复杂度时间:O(N)节点个数空间:O(H)高度6、code原创 2021-03-29 11:08:57 · 142 阅读 · 0 评论 -
扁平化嵌套列表迭代器
文章目录1、描述2、关键字3、思路4、notes5、复杂度6、code1、描述给你一个嵌套的整型列表。请你设计一个迭代器,使其能够遍历这个整型列表中的所有整数。列表中的每一项或者为一个整数,或者是另一个列表。其中列表的元素也可能是整数或是其他列表。示例 1:输入: [[1,1],2,[1,1]]输出: [1,1,2,1,1]解释: 通过重复调用 next 直到 hasNext 返回 false,next 返回的元素的顺序应该是: [1,1,2,1,1]。来源:力扣(LeetCode)链接原创 2021-03-23 11:50:09 · 134 阅读 · 0 评论 -
输出二叉树中所有距离为 K 的结点001
1、描述863给定一个二叉树(具有根结点 root), 一个目标结点 target ,和一个整数值 K 。返回到目标结点 target 距离为 K 的所有结点的值的列表。 答案可以以任何顺序返回。来源:力扣(LeetCode)链接:https://leetcode-cn.com/problems/all-nodes-distance-k-in-binary-tree著作权归领扣网络所有。商业转载请联系官方授权,非商业转载请注明出处。2、关键字二叉树、距离、3、思路target节点,向下就原创 2020-09-06 22:16:45 · 259 阅读 · 1 评论 -
二叉树的堂兄弟节点判断001
1、描述993在二叉树中,根节点位于深度 0 处,每个深度为 k 的节点的子节点位于深度 k+1 处。如果二叉树的两个节点深度相同,但父节点不同,则它们是一对堂兄弟节点。我们给出了具有唯一值的二叉树的根节点 root,以及树中两个不同节点的值 x 和 y。只有与值 x 和 y 对应的节点是堂兄弟节点时,才返回 true。否则,返回 false。来源:力扣(LeetCode)链接:https://leetcode-cn.com/problems/cousins-in-binary-tree著作权原创 2020-09-01 22:06:21 · 406 阅读 · 0 评论 -
返回N叉树的最大深度
1、描述给定一个 N 叉树,找到其最大深度。最大深度是指从根节点到最远叶子节点的最长路径上的节点总数。2、关键字N叉树,深度3、思路和之前的二叉树的最大深度一样,层序遍历BFS4、notes就是按照上一篇文章那样,BFS2层循环,3个部分N叉树,就是把左右孩纸变成了子树的序列,然后用for语句完成下一层队列的初始化工作就好了。复习:for语句使用;5、复杂度时间O(N):n是节点的个数,遍历所有的节点空间:O(N):n是节点的个数,当只有一个根节点时候是 O(N),当时有两层时,是原创 2020-09-01 21:00:30 · 227 阅读 · 0 评论 -
平衡二叉树001第二遍
1、描述判断平衡二叉树2、关键字二叉树3、思路平衡二叉树的定义就是左右子树的高度差小于等于1,所以判断当前节点为根节点的左右子树的高度差,从上到下递归,4、note递归3步1、 找到递归函数的传入参数,和返回值,如此题:递归函数depth,传入参数是树的节点指针,TreeNode * root,返回值是以当前节点为根节点的树的高度,下面一层再调用此递归函数时,就可以标记左右子树的高度,方便比较差值,又因为此题:如果以当前节点为根节点的树不平衡,就没有再返回树高的必要了,直接返回一个-原创 2020-08-29 17:33:20 · 104 阅读 · 0 评论 -
判断一棵树是否镜面对称002
1、描述101给定一个二叉树,检查它是否是镜像对称的。2、关键字二叉树、同一颗树,镜面对称,3、思路想着递归,和上一道题判断同一棵树,一样的思路,只是写成11223344这种能通过了,思路二:想着前序遍历,和后序遍历的逆,一样的时候就是镜面对称了,然后找到之前写的是多茶树,所以那个root->children没有这个参数,改着麻烦,等以后有机会再这么写吧思路三:把一颗树搞成两颗,和判断同一棵树一样的方法4、notes把函数分开写,把一棵树变成两颗5、复杂度时间:O(n)这里遍历了原创 2020-08-11 16:00:08 · 378 阅读 · 0 评论 -
判同一棵树001
1、描述100难度简单440给定两个二叉树,编写一个函数来检验它们是否相同。如果两个树在结构上相同,并且节点具有相同的值,则认为它们是相同的。示例 1:输入: 1 1/ \ / 2 3 2 3 [1,2,3], [1,2,3]输出: true示例 2:输入: 1 1/ 2 2 [1,2], [1,null,2]输出: fal原创 2020-08-07 21:50:57 · 157 阅读 · 0 评论 -
多叉树的 前序、后序、层序遍历,非递归
1、描述590给定一个 N 叉树,返回其节点值的后序遍历。2、关键字N叉树,后序遍历3、思路前序遍历,stack,思考前序遍历是:根左右,后序遍历是:左右根如果把后序遍历根节点和孩子节点倒过来,就是和前序遍历类型一样了。而前序遍历是:左右, 后序遍历是右左,所以在处理孩纸节点时候,用stack暂存当前节点的孩子节点,输出逆置答案时,把stack弹出就好了,4、notes1、前序遍历就是队列,层序遍历也是队列,后序遍历就是用栈暂存逆序,最后结果序列再逆置一下2、层序遍历是取第一个元素,把原创 2020-07-15 22:39:33 · 996 阅读 · 0 评论 -
路经总和002
1、描述112给定一个二叉树和一个目标和,判断该树中是否存在根节点到叶子节点的路径,这条路径上所有节点值相加等于目标和。说明: 叶子节点是指没有子节点的节点。示例:给定如下二叉树,以及目标和 sum = 22, 5 / \ 4 8 / / \ 11 13 4 / \ \ 7 2 1返回 true, 因为存在目标和为 22 的根节点到叶子节点的路径 5->原创 2020-07-07 11:23:34 · 530 阅读 · 0 评论 -
构建最小高度树
1、描述面04.02.给定一个有序整数数组,元素各不相同且按升序排列,编写一个算法,创建一棵高度最小的二叉搜索树。示例:给定有序数组: [-10,-3,0,5,9],一个可能的答案是:[0,-3,9,-10,null,5],它可以表示下面这个高度平衡二叉搜索树:0/ \-3 9/ /-10 5来源:力扣(LeetCode)链接:https://leetcode-cn.com/problems/minimum-height-tree-lcci著作权归领扣网络所有。商业转载原创 2020-06-14 22:06:48 · 232 阅读 · 0 评论