1. 题目 给定一个二叉树,其中所有的右节点要么是具有兄弟节点(拥有相同父节点的左节点)的叶节点,要么为空将此二叉树上下翻转并将它变成一棵树, 原来的右节点将转换成左叶节点。返回新的根。例子:输入: [1,2,3,4,5]1/ 2 3/ 4 5输出: 返回二叉树的根 [4,5,2,#,#,3,1]4/ 5 2/ 3 1 说明:对 [4,5,2,#,#,3,1] 感到困惑? 下面详细介绍请查看 二叉树是如何被序列化的。二叉树的序列化遵循层次遍历规则,当没有节点存在...
根据一棵树的前序遍历与中序遍历构造二叉树。 注意:你可以假设树中没有重复的元素。 例如,给出 前序遍历 preorder = [3,9,20,15,7]中序遍历 inorder = [9,3,15,20,7]返回如下的二叉树:3 / \ 9 20 / \ 15 7 来源:力扣(LeetCode)链接:https://leetcode-cn.com/problems/construct-binary-tree-from-preorder-and-inorder-traversal著作权归领扣网络所有。商业转载请联系官方授权,非商业转载请注明出处。 publi...
给定一个二叉树,返回所有从根节点到叶子节点的路径。 说明: 叶子节点是指没有子节点的节点。 示例: 输入: 1 / 2 3 5 输出: [“1->2->5”, “1->3”] 解释: 所有根节点到叶子节点的路径为: 1->2->5, 1->3 /*** Definition for a binary tree node.* public class TreeNode {* int val;* TreeNode left;* TreeNode right;* TreeNode() {}* TreeNode(int val) { this.val = val; }* TreeNode(int val, Tre...
给你一个二叉树,请你返回其按 层序遍历 得到的节点值。 (即逐层地,从左到右访问所有节点)。 示例:二叉树:[3,9,20,null,null,15,7],3 / \ 9 20 / \ 15 7返回其层序遍历结果: [ [3], [9,20], [15,7]] 来源:力扣(LeetCode)链接:https://leetcode-cn.com/problems/binary-tree-level-order-traversal著作权归领扣网络所有。商业转载请联系官方授权,非商业转载请注明出处。 public List<List<Integer...
LeetCode-二叉树的层次遍历 题目描述 给你一个二叉树,请你返回其按层序遍历得到的节点值。 (即逐层地,从左到右访问所有节点)。 如: 二叉树:[3,9,20,null,null,15,7] 返回其层序遍历结果: 思路 将树的各层节点放在数组里,再遍历数组获取子节点的值,最主要的是把各层的节点单独放在一个列表里存起来。(开始没考虑单独存一行的数据,出错了以后才重新修改) 代码实现 # Definition for a binary tree node. # class TreeN...
翻转一棵二叉树。 示例: 输入:4 / \ 2 7 / \ / \1 3 6 9输出:4 / \ 7 2 / \ / \9 6 3 1 来源:力扣(LeetCode)链接:https://leetcode-cn.com/problems/invert-binary-tree著作权归领扣网络所有。商业转载请联系官方授权,非商业转载请注明出处。 思路可以是当作书的层级遍历,就是每次遍历的时候,换一下左右节点。 public TreeNode invertTree(TreeNode root) {if (root == null) {return ...
问题 我们可以为二叉树 T 定义一个翻转操作,如下所示:选择任意节点,然后交换它的左子树和右子树。 只要经过一定次数的翻转操作后,能使 X 等于 Y,我们就称二叉树 X 翻转等价于二叉树 Y。 编写一个判断两个二叉树是否是翻转等价的函数。这些树由根节点 root1 和 root2 给出。 示例输入: root1 = [1,2,3,4,5,6,null,null,null,7,8], root2 = [1,3,2,null,6,4,5,null,null,null,null,8,7] 输出: true 解释: 我们翻转值为 1,3 ...
难度:简单 给定一个二叉树,检查它是否是镜像对称的。 例如,二叉树 [1,2,2,3,4,4,3] 是对称的。1/ 2 2/ \ / 3 4 4 3但是下面这个 [1,2,2,null,3,null,3] 则不是镜像对称的:1/ 2 2\ 3 3C++:递归算法 思路:1、怎么判断一棵树对不对称?如果根节点只有一个,那自然是对称的。如果根节点下还有左右子树呢?怎么判断?2、怎么左右子树对不对称?从上面可以观察到,左子树的左孩子等于右子树的右孩子,左子树的右孩...
二叉树搜索树节点最小距离 1、题目描述 给你一个二叉搜索树的根节点 root ,返回 树中任意两不同节点值之间的最小差值。实例1:输入:root = [4,2,6,1,3] 输出:1实例2:输入:root = [1,0,48,null,null,12,49] 输出:12、算法描述 思想:采用中序遍历的方式,每次遍历记住前一个数和后一个数,然后彼此相减,然后记住最小的值。 具体实现:1、定义一个全局的变量pre(用于记录上一个节点的值),再定义一个全局变量min(用于记录比...
题解 递归 /*** 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(nullptr), right(nullptr) {}* TreeNode(int x, TreeNode *left, TreeNode *right) : val(x), left(left), right(right) {}* };*/ class Solution { public:vector<int>res;bool dfs(TreeN...
这个题目是一个十分经典的题目,需要我们验证一个二叉搜索树是否是有效的。如果这是一个有效的二叉搜索树,那么一定需要满足这样的条件: 每一棵subtree的所有left subtree都比root要小,每一棵right subtree都要比root要大,因此我们可以写出这样的代码:# Definition for a binary tree node. # class TreeNode: # def __init__(self, val=0, left=None, right=None): # self.val = val # self.left = left ...
116. 填充每个节点的下一个右侧节点指针 给定一个 完美二叉树 ,其所有叶子节点都在同一层,每个父节点都有两个子节点。二叉树定义如下: struct Node {int val;Node *left;Node *right;Node *next; }填充它的每个 next 指针,让这个指针指向其下一个右侧节点。如果找不到下一个右侧节点,则将 next 指针设置为 NULL。 初始状态下,所有 next 指针都被设置为 NULL。 进阶:你只能使用常量级额外空间。 使用递归解题也符合要求,本题...
思路 之前已经写过了根据后序和中序遍历构造二叉树,同理,根据前序和中序遍历构造二叉树的题目也可以写了,所以我没再写一次思路。889这题和前面的思路本质上也没有差别,都是想方法把树分成根,左子树和右子树,再分别递归。 代码 /*** Definition for a binary tree node.* struct TreeNode {* int val;* TreeNode *left;* TreeNode *right;* TreeNode(int x) : val(x), left(NULL), right(NULL) {}* };*/ clas...
# Definition for a binary tree node. # class TreeNode: # def __init__(self, x): # self.val = x # self.left = None # self.right = Noneclass Solution:def maxDepth(self, root: TreeNode) -> int:if root == None:return 0return max(1,self.maxDepth(root.left)+1,self.maxDepth(root.right)+1) 用递归就几行就vans。也是很绝。 这个要记住: 1.树的深度 = max(左子树深度+1,右子树深度+1)...
331. 验证二叉树的前序序列化 题目地址 描述序列化二叉树的一种方法是使用前序遍历。当我们遇到一个非空节点时,我们可以记录下这个节点的值。如果它是一个空节点,我们可以使用一个标记值记录,例如 #。例如,上面的二叉树可以被序列化为字符串 “9,3,4,#,#,1,#,#,2,#,6,#,#”,其中 # 代表一个空节点。 给定一串以逗号分隔的序列,验证它是否是正确的二叉树的前序序列化。编写一个在不重构树的条件下的可行算法。 每个以逗号分隔...