随笔分类 -  leetcode-树

摘要:题目: 解答: 先序遍历进行处理。 1 /** 2 * Definition for a binary tree node. 3 * struct TreeNode { 4 * int val; 5 * TreeNode *left; 6 * TreeNode *right; 7 * TreeNod 阅读全文
posted @ 2020-05-16 12:36 梦醒潇湘 阅读(285) 评论(0) 推荐(0)
摘要:题目: 输入一个非空整数数组,判断该数组是不是某二叉搜索树的后序遍历的结果。如果是则输出Yes,否则输出No。假设输入的数组的任意两个数字都互不相同。 解答: BST的后序序列的合法序列是,对于一个序列S,最后一个元素是x (也就是根),如果去掉最后一个元素的序列为T,那么T满足:T可以分成两段,前 阅读全文
posted @ 2020-05-06 20:00 梦醒潇湘 阅读(218) 评论(0) 推荐(0)
摘要:题目: 给定一个二叉树和其中的一个结点,请找出中序遍历顺序的下一个结点并且返回。注意,树中的结点不仅包含左右子结点,同时包含指向父结点的指针。 解答: 分析二叉树的下一个节点,一共有以下情况: 1.二叉树为空,则返回空; 2.节点右孩子存在,则设置一个指针从该节点的右孩子出发,一直沿着指向左子结点的 阅读全文
posted @ 2020-05-06 19:37 梦醒潇湘 阅读(187) 评论(0) 推荐(0)
摘要:题目:输入两棵二叉树A,B,判断B是不是A的子结构。(ps:我们约定空树不是任意一个树的子结构)。 解答: 1 class Solution { 2 bool isSubtree(TreeNode* pRootA, TreeNode* pRootB) 3 { 4 if (pRootB == NULL 阅读全文
posted @ 2020-05-06 18:39 梦醒潇湘 阅读(197) 评论(0) 推荐(0)
摘要:题目: 解法: 本题与主站 226 题相同:https://leetcode-cn.com/problems/invert-binary-tree/ 1 /** 2 * Definition for a binary tree node. 3 * struct TreeNode { 4 * int 阅读全文
posted @ 2020-05-03 16:15 梦醒潇湘 阅读(136) 评论(0) 推荐(0)
摘要:题目: 解答: 题思路: 先定义一个节点ans用来返回整棵树,定义另一个节点cur=ans,用来表示正在遍历的节点的上一个节点。 进行中序遍历,每遍历到一个节点时,就将它的左孩子设为NULL,然后将它身作为上一个节点的右孩子。 1 /** 2 * Definition for a binary tr 阅读全文
posted @ 2020-05-03 16:12 梦醒潇湘 阅读(224) 评论(0) 推荐(0)
摘要:题目: 解答: 同题目"【树】高度平衡二叉树的判定"。 1 /** 2 * Definition for a binary tree node. 3 * struct TreeNode { 4 * int val; 5 * TreeNode *left; 6 * TreeNode *right; 7 阅读全文
posted @ 2020-05-03 16:09 梦醒潇湘 阅读(162) 评论(0) 推荐(0)
摘要:题目: 解答: 首先复习下二叉搜索树的定义:对于树中的所有子树都有,左子树上的值都小于根节点的值,右子树上的值都大于根节点上的值。 总结一下就是,树的中序遍历可以得到一个升序序列。 那如何保证高度最小呢?当树中的任意结点的左右子树高度差都不超过 1 时,整棵树的深度最小。 下面是一种构造最小高度树的 阅读全文
posted @ 2020-05-03 16:05 梦醒潇湘 阅读(203) 评论(0) 推荐(0)
摘要:题目: 解答: 从根节点开始遍历,每向下一个节点,我们可以把父节点传入的值左移一位并或上当前节点的值。 int newval = val << 1 | node->val; 这样我们就得到了一个从根节点到当前节点表示的数值。接下来我们要做的只是判断一个节点是不是叶子节点,如果是的话就累加,否则继续。 阅读全文
posted @ 2020-05-03 16:02 梦醒潇湘 阅读(197) 评论(0) 推荐(0)
摘要:题目: 解答: 很简单题目,核心就是层序遍历。 如果一个节点的左右左孩子出现空的情况,则用INT_MIN来代替左右孩子节点值,并将左右孩子节点压入队列,这么做的目的只是为了方便我们判断。【类似满二叉树一样对待】 如果在某一深度的搜索结果: (1)x, y都没有找到,则进行下一深度的查找(2)x, y 阅读全文
posted @ 2020-05-03 15:53 梦醒潇湘 阅读(369) 评论(0) 推荐(0)
摘要:题目: 解答: 方法一:深度优先搜索 思路与算法: 我们先进行一次深度优先搜索,获取这颗树中的所有节点的值。然后,就可以判断所有节点的值是不是都相等了。 1 /** 2 * Definition for a binary tree node. 3 * struct TreeNode { 4 * in 阅读全文
posted @ 2020-05-03 15:47 梦醒潇湘 阅读(162) 评论(0) 推荐(0)
摘要:题目: 解答: 1 /** 2 * Definition for a binary tree node. 3 * struct TreeNode { 4 * int val; 5 * TreeNode *left; 6 * TreeNode *right; 7 * TreeNode(int x) : 阅读全文
posted @ 2020-05-03 15:39 梦醒潇湘 阅读(162) 评论(0) 推荐(0)
摘要:题目: 解答: 1 /** 2 * Definition for a binary tree node. 3 * struct TreeNode { 4 * int val; 5 * TreeNode *left; 6 * TreeNode *right; 7 * TreeNode(int x) : 阅读全文
posted @ 2020-05-03 15:32 梦醒潇湘 阅读(143) 评论(0) 推荐(0)
摘要:题目: 解答: 方法一:中序遍历 + 构造新的树 我们在树上进行中序遍历,就可以从小到大得到树上的节点。我们把这些节点的对应的值存放在数组中,它们已经有序。接着我们直接根据数组构件题目要求的树即可。 1 /** 2 * Definition for a binary tree node. 3 * s 阅读全文
posted @ 2020-05-03 15:28 梦醒潇湘 阅读(187) 评论(0) 推荐(0)
摘要:题目: 解答: 1 /** 2 * Definition for a binary tree node. 3 * public class TreeNode { 4 * int val; 5 * TreeNode left; 6 * TreeNode right; 7 * TreeNode(int 阅读全文
posted @ 2020-05-03 15:22 梦醒潇湘 阅读(179) 评论(0) 推荐(0)
摘要:题目: 解答: 方法:深度优先搜索 思路和算法: 首先,让我们找出给定的两个树的叶值序列。之后,我们可以比较它们,看看它们是否相等。 要找出树的叶值序列,我们可以使用深度优先搜索。如果结点是叶子,那么 dfs 函数会写入结点的值,然后递归地探索每个子结点。这可以保证按从左到右的顺序访问每片叶子,因为 阅读全文
posted @ 2020-05-03 15:17 梦醒潇湘 阅读(170) 评论(0) 推荐(0)
摘要:题目: 解答: 同题目530。 1 /** 2 * Definition for a binary tree node. 3 * struct TreeNode { 4 * int val; 5 * TreeNode *left; 6 * TreeNode *right; 7 * TreeNode( 阅读全文
posted @ 2020-05-03 15:14 梦醒潇湘 阅读(163) 评论(0) 推荐(0)
摘要:题目: 解答: 概述: 二叉搜索树的巨大优势是:在平均情况下,能够在log(N)的时间内完成搜索和插入元素。 二叉搜索树的插入方法非常简单,我们将插入的节点作为叶子节点的子节点插入。插入到哪个节点可以遵循以下原则: (1)若 val > node->val, 插入到右子树; (2)若val < no 阅读全文
posted @ 2020-05-03 15:11 梦醒潇湘 阅读(486) 评论(0) 推荐(0)
摘要:题目: 解答: 方法一:递归 1 /** 2 * Definition for a binary tree node. 3 * struct TreeNode { 4 * int val; 5 * TreeNode *left; 6 * TreeNode *right; 7 * TreeNode(i 阅读全文
posted @ 2020-05-03 15:04 梦醒潇湘 阅读(131) 评论(0) 推荐(0)
摘要:题目: 解答: 首先递归遍历树,记录下根节点的数据,然后对数据进行排序,从数据头开始遍历,找出第二小的数据。时间复杂度:o(n)+o(logn/2)空间复杂度:o(n) 1 /** 2 * Definition for a binary tree node. 3 * struct TreeNode 阅读全文
posted @ 2020-05-03 14:54 梦醒潇湘 阅读(181) 评论(0) 推荐(0)