
树
Jiale685
幸福并不是男子汉所该追求的
展开
-
【LeetCode】117. Populating Next Right Pointers in Each Node II 解题报告(Python)
给定一个二叉树struct Node {int val;Node *left;Node *right;Node *next;}填充它的每个 next 指针,让这个指针指向其下一个右侧节点。如果找不到下一个右侧节点,则将 next 指针设置为 NULL。初始状态下,所有 next 指针都被设置为 NULL。进阶:你只能使用常量级额外空间。使用递归解题也符合要求,本题中递归程序占用的栈空间不算做额外的空间复杂度。解题思路1:这一题和【LeetCode】116. Populating原创 2020-07-05 18:28:24 · 2171 阅读 · 0 评论 -
【LeetCode】116. Populating Next Right Pointers in Each Node 解题报告(Python)
给定一个完美二叉树,其所有叶子节点都在同一层,每个父节点都有两个子节点。二叉树定义如下:struct Node {int val;Node *left;Node *right;Node *next;}填充它的每个 next 指针,让这个指针指向其下一个右侧节点。如果找不到下一个右侧节点,则将 next 指针设置为 NULL。初始状态下,所有 next 指针都被设置为 NULL。示例:解题思路1:这一题可以采用队列层序遍历的方法(指向下一个会有一个判断,不能时当前层的最后一个,及1,3原创 2020-07-05 10:30:17 · 358 阅读 · 0 评论 -
【LeetCode】114. Flatten Binary Tree to Linked List 解题报告(Python)
题目分析:给定一个二叉树,原地将它展开为链表。例如,给定二叉树将其展开为:解题思路:看其展开的顺序是类似前序遍历,但是解题还是需要思路,二叉树一般可以用递归和非递归解决(1)递归变换过程 1 / \ 2 5 / \ \ 3 4 6 1 / \ 2 5 \...原创 2019-05-29 22:47:01 · 298 阅读 · 0 评论 -
【LeetCode】113. Path Sum II 解题报告(Python)
题目分析:给定一个二叉树和一个目标和,找到所有从根节点到叶子节点路径总和等于给定目标和的路径。说明: 叶子节点是指没有子节点的节点。示例:给定如下二叉树,以及目标和 sum = 22,返回: [[5,4,11,2],[5,8,4,5]]解题思路:这一题是【LeetCode】112. Path Sum的进阶版,比上一题要稍微难一些,但是用上一题的思路可以解决。如果根节点为空,直接返回...原创 2019-05-28 22:37:07 · 299 阅读 · 0 评论 -
【LeetCode】112. Path Sum 解题报告(Python)
题目分析:给定一个二叉树和一个目标和,判断该树中是否存在根节点到叶子节点的路径,这条路径上所有节点值相加等于目标和。说明: 叶子节点是指没有子节点的节点。示例: 给定如下二叉树,以及目标和 sum = 22,返回 true, 因为存在目标和为 22 的根节点到叶子节点的路径 5->4->11->2。解题思路:根节点为空:返回Falseif not root: re...原创 2019-05-28 16:34:54 · 445 阅读 · 0 评论 -
【LeetCode】111. Minimum Depth of Binary Tree 解题报告(Python)
题目分析:给定一个二叉树,找出其最小深度。最小深度是从根节点到最近叶子节点的最短路径上的节点数量。说明: 叶子节点是指没有子节点的节点。示例:给定二叉树 [3,9,20,null,null,15,7],返回它的最小深度 2.解题思路:与【LeetCode】104. Maximum Depth of Binary Tree 一致,把【LeetCode】104. Maximum Dep...原创 2019-05-27 20:45:33 · 504 阅读 · 0 评论 -
【LeetCode】110. Balanced Binary Tree 解题报告(Python)
题目分析:给定一个二叉树,判断它是否是高度平衡的二叉树。本题中,一棵高度平衡二叉树定义为:一个二叉树每个节点 的左右两个子树的高度差的绝对值不超过1。示例 1:给定二叉树 [3,9,20,null,null,15,7]返回 true 。示例 2:给定二叉树 [1,2,2,3,3,null,null,4,4]返回 false 。解题思路:思路一:我们在【LeetCode】104. ...原创 2019-05-26 11:36:10 · 740 阅读 · 0 评论 -
【LeetCode】109. Convert Sorted List to Binary Search Tree 解题报告(Python)
题目分析:给定一个单链表,其中的元素按升序排序,将其转换为高度平衡的二叉搜索树。本题中,一个高度平衡二叉树是指一个二叉树每个节点 的左右两个子树的高度差的绝对值不超过 1。示例:给定的有序链表: [-10, -3, 0, 5, 9],一个可能的答案是:[0, -3, 9, -10, null, 5], 它可以表示下面这个高度平衡二叉搜索树:解题思路:这一题继续用【LeetCode】10...原创 2019-05-25 11:28:23 · 338 阅读 · 0 评论 -
【LeetCode】108. Convert Sorted Array to Binary Search Tree 解题报告(Python)
题目分析:将一个按照升序排列的有序数组,转换为一棵高度平衡二叉搜索树。本题中,一个高度平衡二叉树是指一个二叉树每个节点 的左右两个子树的高度差的绝对值不超过 1。示例:给定有序数组: [-10,-3,0,5,9],一个可能的答案是:[0,-3,9,-10,null,5],它可以表示下面这个高度平衡二叉搜索树:解题思路:这一题利用二分查找与递归的思想解决,因为是把一个有序的数组转换成二叉...原创 2019-05-25 11:12:35 · 391 阅读 · 0 评论 -
【LeetCode】107. Binary Tree Level Order Traversal II 解题报告(Python)
题目分析:给定一个二叉树,返回其节点值自底向上的层次遍历。 (即按从叶子节点所在层到根节点所在的层,逐层从左向右遍历)例如:给定二叉树 [3,9,20,null,null,15,7],返回其自底向上的层次遍历为:[[15,7], [9,20],[3]]解题思路:这一题与【LeetCode】102. Binary Tree Level Order Traversal思路相同,就是递归中序...原创 2019-05-23 19:51:47 · 336 阅读 · 0 评论 -
【LeetCode】106. Construct Binary Tree from Inorder and Postorder Traversal 解题报告(Python)
题目分析:根据一棵树的中序遍历与后序遍历构造二叉树。注意:你可以假设树中没有重复的元素。例如,给出中序遍历 inorder = [9,3,15,20,7],后序遍历 postorder = [9,15,7,20,3]。返回如下的二叉树:解题思路:这一题与105. Construct Binary Tree from Preorder and Inorder Traversal基本完全相同...原创 2019-05-23 10:33:16 · 437 阅读 · 0 评论 -
【LeetCode】105. Construct Binary Tree from Preorder and Inorder Traversal 解题报告(Python)
题目分析:根据一棵树的前序遍历与中序遍历构造二叉树。注意:你可以假设树中没有重复的元素。例如,给出:前序遍历 preorder = [3,9,20,15,7]、中序遍历 inorder = [9,3,15,20,7]。返回如下的二叉树:解题思路:这一题我们首先需要找到构造二叉树的规律:preorder: 3 9 20 15 7inorder: 9 3 15 ...原创 2019-05-22 22:04:02 · 276 阅读 · 0 评论 -
【LeetCode】104. Maximum Depth of Binary Tree 解题报告(Python)
题目分析:给定一个二叉树,找出其最大深度。二叉树的深度为根节点到最远叶子节点的最长路径上的节点数。说明: 叶子节点是指没有子节点的节点。示例:给定二叉树 [3,9,20,null,null,15,7],返回它的最大深度 3 。解题思路:这一题可以用深度遍历和广度遍历解决,深度遍历采用递归,广度遍历使用队列的思想。这一题可以说是一个非常经典的递归题目。提交代码1:(深度遍历,递归...原创 2019-05-21 16:44:21 · 566 阅读 · 3 评论 -
【LeetCode】103. Binary Tree Zigzag Level Order Traversal 解题报告(Python)
题目分析:给定一个二叉树,返回其节点值的锯齿形层次遍历。(即先从左往右,再从右往左进行下一层遍历,以此类推,层与层之间交替进行)。例如:给定二叉树 [3,9,20,null,null,15,7],返回锯齿形层次遍历如下:[[3],[20,9],[15,7]]解题思路:、这一题本质还是遍历,使用递归进行遍历。关键就是用一个变量去储存当前层数res[level].append(roo...原创 2019-05-21 11:28:53 · 967 阅读 · 0 评论 -
【LeetCode】102. Binary Tree Level Order Traversal 解题报告(Python)
题目分析:给定一个二叉树,返回其按层次遍历的节点值。 (即逐层地,从左到右访问所有节点)。例如:给定二叉树: [3,9,20,null,null,15,7],返回其层次遍历结果:[[3],[9,20],[15,7]]解题思路:这一题的本质还是遍历,使用递归进行遍历。关键就是用一个变量去储存当前层数res[level].append(root.val) 。提交代码:(递归,Runti...原创 2019-05-20 23:55:26 · 378 阅读 · 0 评论 -
【LeetCode】101. Symmetric Tree 解题报告(Python)
题目分析:给定一个二叉树,检查它是否是镜像对称的。例如,二叉树 [1,2,2,3,4,4,3] 是对称的。但是下面这个 [1,2,2,null,3,null,3] 则不是镜像对称的:解题思路:这一题的本质还是遍历,对于树的遍历可使用递归或者栈。提交代码1:(递归,Runtime: 40 ms, faster than 99.14% )class Solution: def...原创 2019-04-26 16:31:13 · 542 阅读 · 0 评论 -
【LeetCode】100. Same Tree 解题报告(Python)
题目分析:给定两个二叉树,编写一个函数来检验它们是否相同。如果两个树在结构上相同,并且节点具有相同的值,则认为它们是相同的。示例 1:输入:输出: true示例 2:输入:输出: false解题思路:这一题的本质还是遍历,我用的递归遍历去判断是否相同,我想栈应该也能解决,但是本题递归效率还是很高的,所以用递归解决问题。提交代码:(递归,Runtime: 36 ms, fas...原创 2019-04-25 16:18:57 · 379 阅读 · 0 评论 -
【LeetCode】99. Recover Binary Search Tree 解题报告(Python)
题目分析:二叉搜索树中的两个节点被错误地交换。请在不改变其结构的情况下,恢复这棵树。示例 1:解题思路:第一种:中序遍历将数值取出来,然后排序,然后再插入进入,使用的空间复杂度是O(n),见提交代码1。第二种:使用指针找到变动的那两个值,空间复杂度为常量见提交代码2.设置n1,n2的值用于寻找那两个点,self.n1 = TreeNode(None); self.n2 = Tree...原创 2019-04-25 16:18:36 · 396 阅读 · 0 评论 -
【LeetCode】98. Validate Binary Search Tree 解题报告(Python)
题目分析:给定一个二叉树,判断其是否是一个有效的二叉搜索树。假设一个二叉搜索树具有如下特征:节点的左子树只包含小于当前节点的数。节点的右子树只包含大于当前节点的数。所有左子树和右子树自身必须也是二叉搜索树。示例 1:输出: true示例 2:解题思路:初看这一题是懵逼的,经过评论区的提醒发现核心就四个字:中序遍历,对于一个搜索树中序遍历为升序,这样我们就可以把问题转化为...原创 2019-04-23 22:57:45 · 327 阅读 · 0 评论 -
【LeetCode】95. Unique Binary Search Trees II 解题报告(Python)
题目分析:给定一个整数 n,生成所有由 1 … n 为节点所组成的二叉搜索树。示例:输入: 3输出:[[1,null,3,2],[3,2,null,1],[3,1,null,null,2],[2,1,3],[1,null,2,null,3]]解释:以上的输出对应以下 5 种不同结构的二叉搜索树:解题思路:这一题可以用递归或递归+动态规划解,我们先说递归帮助理解,这一...原创 2019-04-19 22:22:37 · 471 阅读 · 0 评论 -
【LeetCode】96. Unique Binary Search Trees 解题报告(Python)
题目分析:给定一个整数 n,求以 1 … n 为节点组成的二叉搜索树有多少种?示例:输入: 3,输出: 5解释:给定 n = 3, 一共有 5 种不同结构的二叉搜索树:解题思路:对于一点i,当其为根节点时,左子树的节点的个数为i-1,(为1,…i-1),右子树的个数为n-i(为,i+1,…n)。对一个根来说,唯一二叉树的个数为左子树结点的个数乘以右子树的个数。而根节点可以从1到n 中选择...原创 2019-04-18 16:56:08 · 520 阅读 · 0 评论 -
【LeetCode】94. Binary Tree Inorder Traversal 解题报告(Python)
题目分析:给定一个二叉树,返回它的中序 遍历。示例:输入: [1,null,2,3]12/3输出: [1,3,2]解题思路:遍历二叉树我们可以选择使用递归或者栈的方式解决递归,我们只需要判断当前节点不为None,就接着把左节点进入递归,左节点进入完毕,我们就输出,当前节点值,然后把右节点进入递归。(这与中序遍历思想相同)参考博客1栈,我们把左节点压入栈,左节点压入完毕,我...原创 2019-04-18 11:02:09 · 492 阅读 · 0 评论