![](https://img-blog.csdnimg.cn/20201014180756928.png?x-oss-process=image/resize,m_fixed,h_64,w_64)
二叉树
风做了云的梦
好好干!
展开
-
LeetCode学习笔记(9) 第653题 Find Duplicate Subtrees
文章目录题目分析流程代码题目分析solution1:将每一棵子树序列化,存入哈希表中,如果某棵子树的个数超过等于2,我们就保留,其他忽略。solution2:为每个唯一的子树分配唯一的id流程solution1:定义一个哈希表存counts, 定义一个vector存需要保留的root节点代码soulution1:/** * Definition for a binary tree node. * struct TreeNode { * int val; * T原创 2020-11-28 15:30:54 · 97 阅读 · 0 评论 -
LeetCode学习笔记(8) 第297题 Serialize and Deserialize Binary Tree
文章目录题目分析流程代码题目分析采用先序遍历的方式存储成字符串, 当叶子节点左右子树为空的时候 我们使用#代替流程使用字符串输入输出流(istringstream, ostringstream)负责写入写出。代码c++版/** * Definition for a binary tree node. * struct TreeNode { * int val; * TreeNode *left; * TreeNode *right; * Tre原创 2020-11-05 13:10:39 · 181 阅读 · 0 评论 -
LeetCode学习笔记(7) 第98题 Validate Binary Search Tree
文章目录题目分析流程代码题目分析1.假如root节点值为a, 那么左右子树上的值用一定有个范围, 利用范围求解2.BST有个重要的性质, 就是采用中序遍历之后的序列一定是有序的。流程Solution 1 : 定义两个空指针分别表示无穷大或者无穷小的值,遍历左右子树时分别将root->val 设为最大,最小值Solution 2 : 利用BST性质, 使用中序遍历, 定义一个成员变量记录pre_value, 比较与当前值得大小,大于等于返 回False,否则返回True。代原创 2020-11-04 15:41:52 · 95 阅读 · 0 评论 -
LeetCode学习笔记(6) 第124题 Binary Tree Maximum Path Sum
文章目录题目分析流程代码题目分析和上一篇LeetCode算法题很像。使用递归来解。注意只有一个节点时且节点为负数,不能直接返回0Time Complexity:O(n)Space ComplexityO(h)流程定义一个子函数分别处理子树返回子树的sum,记录最大和。 代码/** * Definition for a binary tree node. * struct TreeNode { * int val; * TreeNode *left; *原创 2020-11-03 14:47:38 · 148 阅读 · 0 评论 -
LeetCode学习笔记(5) 第687题 Longest Univalue Path
文章目录题目分析流程代码题目分析解决该题的思想还是递归地先处理子树问题流程递归返回左右子树的最长path代码c++版/** * Definition for a binary tree node. * struct TreeNode { * int val; * TreeNode *left; * TreeNode *right; * TreeNode() : val(0), left(nullptr), right(nullptr) {}原创 2020-11-03 09:46:38 · 94 阅读 · 0 评论 -
LeetCode学习笔记(4) 第1110题 Delete Nodes And Return Forest
文章目录题目分析流程代码知识点题目分析解决tree的问题, 一般考虑使用递归,根据不同的题目,可以选择不同的遍历方式(前序,中序,后序遍历),本题可以使用后序遍历,最后处理根节点, 先分别处理每个节点的左子树,右子树流程使用后序遍历,观察每一个节点是否需要被删除,如果需要删除,保存该节点的左右子树(如果存在的话),不需要删除直接返回。代码python# Definition for a binary tree node.# class TreeNode(object):# de原创 2020-10-31 10:57:24 · 205 阅读 · 0 评论 -
LeetCode学习笔记(3) 第1145题 Binary Tree Coloring Game
文章目录题目分析流程代码题目分析关键点在于想到与红色节点连接的三条线, 切断数目最多的那一条就ok。流程遍历以x为根节点的子树, 和x的左子树,右子树节点个数(x可能为根节点)比较x,左右子树节点数最大的, 在和剩下的节点数比较(n-以x为根节点的子树节点数)代码c++版/** * Definition for a binary tree node. * struct TreeNode { * int val; * TreeNode *left; *原创 2020-10-30 10:43:42 · 794 阅读 · 0 评论 -
LeetCode学习笔记(2) 第1305题 All Elements in Two Binary Search Trees
文章目录题目:All Elements in Two Binary Search Trees分析流程代码小知识点题目:All Elements in Two Binary Search TreesGiven two binary search trees root1 and root2.Return a list containing all the integers from both trees sorted in ascending order.分析Solution1:Collect a原创 2020-10-29 15:16:39 · 132 阅读 · 0 评论 -
二叉树(创建,遍历) c++版
#include<iostream>#include<queue>using namespace std;struct BTreeNode{ int m_data; BTreeNode* m_pLeft; BTreeNode* m_pRight;};// 使用前序和中序遍历创建唯一确定二叉树//preOrder 前序遍历序列//inOrder 中序遍历序列//nLen 总的节点数/* 1.判断所输入的序列是否符合要求 2.取原创 2020-10-28 19:34:18 · 92 阅读 · 0 评论