树-二叉树
文章平均质量分 82
memcpy0
希望探索文理结合的自由之路。
展开
-
LeetCode 572. 另一棵树的子树【树+嵌套DFS;DFS序+KMP;树哈希】简单【C++,Java,GO】
本文属于「征服LeetCode」系列文章之一,这一系列正式开始于2021/08/12。由于LeetCode上部分题目有锁,本系列将至少持续到刷完所有无锁题之日为止;由于LeetCode还在不断地创建新题,本系列的终止日期可能是永远。在这一系列刷题文章中,我不仅会讲解多种解题思路及其优化,还会用多种编程语言实现题解,涉及到通用解法时更将归纳总结出相应的算法模板。。原创 2024-08-11 23:21:20 · 282 阅读 · 0 评论 -
LeetCode 1361. 验证二叉树【二叉树,DFS或BFS或并查集】1464
本文属于「征服LeetCode」系列文章之一,这一系列正式开始于2021/08/12。由于LeetCode上部分题目有锁,本系列将至少持续到刷完所有无锁题之日为止;由于LeetCode还在不断地创建新题,本系列的终止日期可能是永远。在这一系列刷题文章中,我不仅会讲解多种解题思路及其优化,还会用多种编程语言实现题解,涉及到通用解法时更将归纳总结出相应的算法模板。。原创 2023-10-18 09:14:12 · 143 阅读 · 0 评论 -
LeetCode 865. Smallest Subtree with all the Deepest Nodes【树,DFS,BFS,哈希表】1534
本文属于「征服LeetCode」系列文章之一,这一系列正式开始于2021/08/12。由于LeetCode上部分题目有锁,本系列将至少持续到刷完所有无锁题之日为止;由于LeetCode还在不断地创建新题,本系列的终止日期可能是永远。在这一系列刷题文章中,我不仅会讲解多种解题思路及其优化,还会用多种编程语言实现题解,涉及到通用解法时更将归纳总结出相应的算法模板。。原创 2023-09-07 23:20:17 · 424 阅读 · 0 评论 -
LeetCode 1123. Lowest Common Ancestor of Deepest Leaves【树,DFS,BFS,哈希表】1607
本文属于「征服LeetCode」系列文章之一,这一系列正式开始于2021/08/12。由于LeetCode上部分题目有锁,本系列将至少持续到刷完所有无锁题之日为止;由于LeetCode还在不断地创建新题,本系列的终止日期可能是永远。在这一系列刷题文章中,我不仅会讲解多种解题思路及其优化,还会用多种编程语言实现题解,涉及到通用解法时更将归纳总结出相应的算法模板。。原创 2023-09-07 23:14:04 · 591 阅读 · 0 评论 -
LeetCode 1080. Insufficient Nodes in Root to Leaf Paths【递归,二叉树】中等
本文属于「征服LeetCode」系列文章之一,这一系列正式开始于2021/08/12。由于LeetCode上部分题目有锁,本系列将至少持续到刷完所有无锁题之日为止;由于LeetCode还在不断地创建新题,本系列的终止日期可能是永远。在这一系列刷题文章中,我不仅会讲解多种解题思路及其优化,还会用多种编程语言实现题解,涉及到通用解法时更将归纳总结出相应的算法模板。。原创 2023-05-22 19:44:56 · 457 阅读 · 0 评论 -
LeetCode 1026. Maximum Difference Between Node and Ancestor【DFS,BFS,树】中等
本文属于「征服LeetCode」系列文章之一,这一系列正式开始于2021/08/12。由于LeetCode上部分题目有锁,本系列将至少持续到刷完所有无锁题之日为止;由于LeetCode还在不断地创建新题,本系列的终止日期可能是永远。在这一系列刷题文章中,我不仅会讲解多种解题思路及其优化,还会用多种编程语言实现题解,涉及到通用解法时更将归纳总结出相应的算法模板。。原创 2023-04-18 16:58:22 · 374 阅读 · 0 评论 -
LeetCode 543. Diameter of Binary Tree【二叉树,DFS】简单
本文属于「征服LeetCode」系列文章之一,这一系列正式开始于2021/08/12。由于LeetCode上部分题目有锁,本系列将至少持续到刷完所有无锁题之日为止;由于LeetCode还在不断地创建新题,本系列的终止日期可能是永远。在这一系列刷题文章中,我不仅会讲解多种解题思路及其优化,还会用多种编程语言实现题解,涉及到通用解法时更将归纳总结出相应的算法模板。。原创 2023-03-12 19:09:59 · 191 阅读 · 0 评论 -
PAT 团体程序设计天梯赛-练习集 L2-011 玩转二叉树 (25 分)
给定一棵二叉树的中序遍历和前序遍历,请你先将树做个镜面反转,再输出反转后的层序遍历的序列。所谓镜面反转,是指将所有非叶结点的左右孩子对换。这里假设键值都是互不相等的正整数。输入格式:输入第一行给出一个正整数 NNN(≤30≤30≤30),是二叉树中结点的个数。第二行给出其中序遍历序列。第三行给出其前序遍历序列。数字间以空格分隔。输出格式:在一行中输出该树反转后的层序遍历的序列。数字间以1个空格分隔,行首尾不得有多余空格。输入样例:71 2 3 4 5 6 74 1 3 2 6 5 7输出原创 2021-05-28 06:49:09 · 153 阅读 · 0 评论 -
LeetCode C++ 889. Construct Binary Tree from Preorder and Postorder Traversal【Tree/Recursion】中等
Return any binary tree that matches the given preorder and postorder traversals.Values in the traversals pre and post are distinct positive integers.Example 1:Input: pre = [1,2,4,5,3,6,7], post = [4,5,2,6,7,3,1]Output: [1,2,3,4,5,6,7]原创 2021-05-07 03:31:31 · 153 阅读 · 1 评论 -
LeetCode 515. 在每个树行中找最大值【树,BFS,DFS】中等
Given the root of a binary tree, return an array of the largest value in each row of the tree (0-indexed).Example 1:Input: root = [1,3,2,5,3,null,9]Output: [1,3,9]Example 2:Input: root = [1,2,3]Output: [1,3]Example 3:Input: root = [1]Output: [1原创 2021-03-27 15:23:03 · 280 阅读 · 0 评论 -
LeetCode C++ 1261. Find Elements in a Contaminated Binary Tree【Tree/Hash Table】中等
Given a binary tree with the following rules: root.val == 0 If treeNode.val == x and treeNode.left != null, then treeNode.left.val == 2 * x + 1 If treeNode.val == x and treeNode.right != null, then treeNode.right.val == 2 * x + 2Now the binary t原创 2021-01-18 22:59:53 · 180 阅读 · 0 评论 -
LeetCode C++ 814. Binary Tree Pruning【Tree/Recursion】中等
We are given the head node root of a binary tree, where additionally every node's value is either a 0 or a 1.Return the same tree where every subtree (of the given tree) not containing a 1 has been removed.(Recall that the subtree of a node X is X,原创 2021-01-18 18:34:46 · 168 阅读 · 0 评论 -
LeetCode C++ 1315. Sum of Nodes with Even-Valued Grandparent【Tree/DFS/BFS】中等
Given a binary tree, return the sum of values of nodes with even-valued grandparent. (A grandparent of a node is the parent of its parent, if it exists.)If there are no nodes with an even-valued grandparent, return 0.Example 1:Input: root =原创 2021-01-15 13:46:55 · 173 阅读 · 0 评论 -
LeetCode C++ 1469. Find All The Lonely Nodes【Tree/DFS/BFS】简单
In a binary tree, a lonely node is a node that is the only child of its parent node. The root of the tree is not lonely because it does not have a parent node.Given the root of a binary tree, return an array containing the values of all lonely nodes in th原创 2020-12-19 15:00:37 · 225 阅读 · 1 评论 -
LeetCode C++ 剑指 Offer 34. 二叉树中和为某一值的路径【Tree/DFS】中等
输入一棵二叉树和一个整数,打印出二叉树中节点值的和为输入整数的所有路径。从树的根节点开始往下一直到叶节点所经过的节点形成一条路径。示例:给定如下二叉树,以及目标和 sum = 22 , 5 / \ 4 8 / / \ 11 13 4 / \ / \7 2 5 1返回:[ [5,4,11,2], [5,8,4,5]]提示:节点总数 <= 10000解法 DFSclass Solution {pr原创 2020-12-10 00:28:49 · 142 阅读 · 0 评论 -
LeetCode C++ 剑指 Offer 32 - III. 从上到下打印二叉树 III【Tree/BFS】中等
请实现一个函数按照之字形顺序打印二叉树,即第一行按照从左到右的顺序打印,第二层按照从右到左的顺序打印,第三行再按照从左到右的顺序打印,其他行以此类推。例如: 给定二叉树: [3,9,20,null,null,15,7] , 3 / \ 9 20 / \ 15 7返回其层次遍历结果:[ [3], [20,9], [15,7]]提示:节点总数 <= 1000解法 BFS+标志变量class Solution {public:原创 2020-12-08 01:04:46 · 235 阅读 · 0 评论 -
LeetCode C++ 103. Binary Tree Zigzag Level Order Traversal【Tree/BFS】中等
Given a binary tree, return the zigzag level order traversal of its nodes’ values. (ie, from left to right, then right to left for the next level and alternate between).For example: Given binary tree [3,9,20,null,null,15,7], 3 / \ 9 20 / \原创 2020-12-08 00:56:55 · 216 阅读 · 0 评论 -
LeetCode C++ 1161. Maximum Level Sum of a Binary Tree【Tree/BFS】中等
Given the root of a binary tree, the level of its root is 1, the level of its children is 2, and so on.Return the smallest level X such that the sum of all the values of nodes at level X is maximal.Example 1:Input: root = [1,7,0,7,-8,null,nul原创 2020-12-08 00:20:37 · 200 阅读 · 0 评论 -
LeetCode C++ 513. Find Bottom Left Tree Value【Tree/DFS/BFS】中等
Given a binary tree, find the leftmost value in the last row of the tree.Example 1:Input: 2 / \ 1 3Output:1Example 2:Input: 1 / \ 2 3 / / \ 4 5 6 / 7Output:7Note: You may assume t原创 2020-11-30 13:06:33 · 268 阅读 · 0 评论 -
LeetCode C++ 1302. Deepest Leaves Sum【Tree/BFS/DFS】中等
Given a binary tree, return the sum of values of its deepest leaves.Example 1:Input: root = [1,2,3,4,5,null,6,7,null,null,null,null,8]Output: 15Constraints:The number of nodes in the tree is between 1 and 10^4.The value of nodes is between 1 and 1原创 2020-11-27 01:22:22 · 317 阅读 · 0 评论 -
LeetCode C++ 102. 二叉树的层序遍历【Tree/BFS】中等
给你一个二叉树,请你返回其按 层序遍历 得到的节点值。 (即逐层地,从左到右访问所有节点)。示例:二叉树:[3,9,20,null,null,15,7], 3 / \ 9 20 / \ 15 7返回其层次遍历结果:[ [3], [9,20], [15,7]]解法 BFSclass Solution {public: vector<vector<int>> levelOrder(TreeNode* root原创 2020-11-26 00:53:42 · 183 阅读 · 0 评论 -
LeetCode C++ 剑指 Offer 32 - I. 从上到下打印二叉树【Tree/BFS】中等
从上到下打印出二叉树的每个节点,同一层的节点按照从左到右的顺序打印。例如,给定二叉树 [3,9,20,null,null,15,7] : 3 / \ 9 20 / \ 15 7返回[3,9,20,15,7]提示:节点总数 <= 1000解法 BFSclass Solution {public: vector<int> levelOrder(TreeNode* root) { if (root == null原创 2020-11-26 00:45:22 · 181 阅读 · 0 评论 -
LeetCode C++ 剑指 Offer 32 - II. 从上到下打印二叉树 II【Tree/BFS】简单
从上到下按层打印二叉树,同一层的节点按从左到右的顺序打印,每一层打印到一行。例如:给定二叉树 [3,9,20,null,null,15,7] : 3 / \ 9 20 / \ 15 7返回其层次遍历结果:[ [3], [9,20], [15,7]]提示:节点总数 <= 1000解法 BFSclass Solution {public: vector<vector<int>> levelOrder(原创 2020-11-26 00:40:41 · 217 阅读 · 0 评论 -
LeetCode C++ 面试题 04.03. List of Depth LCCI【Tree/BFS】中等
Given a binary tree, design an algorithm which creates a linked list of all the nodes at each depth (e.g., if you have a tree with depth D, you’ll have D linked lists). Return a array containing all the linked lists.Example:Input: [1,2,3,4,5,null,7,8]原创 2020-11-25 01:29:46 · 150 阅读 · 0 评论 -
LeetCode C++ 872. Leaf-Similar Trees【Tree/DFS】简单
Consider all the leaves of a binary tree, from left to right order, the values of those leaves form a leaf value sequence.For example, in the given tree above, the leaf value sequence is (6, 7, 4, 9, 8) .Two binary trees are considered leaf-similar if t原创 2020-11-14 15:52:38 · 238 阅读 · 0 评论 -
LeetCode C++ 剑指 Offer 27. 二叉树的镜像【Tree】简单
请完成一个函数,输入一个二叉树,该函数输出它的镜像。例如输入: 4 / \ 2 7 / \ / \1 3 6 9镜像输出: 4 / \ 7 2 / \ / \9 6 3 1示例 1:输入:root = [4,2,7,1,3,6,9]输出:[4,7,2,9,6,3,1]限制: 0 <= 节点个数 <= 1000解法1 递归遍历class Solution {public:原创 2020-11-12 11:30:47 · 717 阅读 · 1 评论 -
LeetCode C++ 993. Cousins in Binary Tree【Tree/DFS/BFS】简单
In a binary tree, the root node is at depth 0, and children of each depth k node are at depth k+1.Two nodes of a binary tree are cousins if they have the same depth, but have different parents.We are given the root of a binary tree with unique values, an原创 2020-11-11 02:00:16 · 164 阅读 · 0 评论 -
LeetCode C++ 965. Univalued Binary Tree【BFS/DFS/Tree】简单
A binary tree is univalued if every node in the tree has the same value. Return true if and only if the given tree is univalued.Example 1:Input: [1,1,1,1,1,null,1]Output: trueExample 2:Input: [2,2,2,5,2]Output: falseNote:The number of nodes in t原创 2020-11-09 21:00:45 · 187 阅读 · 0 评论 -
LeetCode 337. House Robber III【DFS,树型DP】中等
The thief has found himself a new place for his thievery again. There is only one entrance to this area, called the “root.” Besides the root, each house has one and only one parent house. After a tour, the smart thief realized that “all houses in this plac原创 2020-10-28 15:10:56 · 167 阅读 · 0 评论 -
LeetCode C++ 1022. Sum of Root To Leaf Binary Numbers【Tree】简单
You are given the root of a binary tree where each node has a value 0 or 1. Each root-to-leaf path represents a binary number starting with the most significant bit. For example, if the path is 0 -> 1 -> 1 -> 0 -> 1, then this could represent原创 2020-10-24 10:54:20 · 192 阅读 · 0 评论 -
LeetCode C++ 655. Print Binary Tree【Tree/String】中等
Print a binary tree in an m*n 2D string array following these rules:The row number m should be equal to the height of the given binary tree.The column number n should always be an odd number.The root node’s value (in string format) should be put in the原创 2020-10-20 18:12:42 · 188 阅读 · 0 评论 -
LeetCode C++ 590. N-ary Tree Postorder Traversal【Tree/DFS】简单
Given an n-ary tree, return the postorder traversal of its nodes' values.Nary-Tree input serialization is represented in their level order traversal, each group of children is separated by the null value (See examples).Follow up:Recursive solution原创 2020-10-06 18:46:06 · 131 阅读 · 0 评论 -
LeetCode C++ 606. Construct String from Binary Tree【Tree/DFS/String】简单
You need to construct a string consists of parenthesis and integers from a binary tree with the preorder traversing way.The null node needs to be represented by empty parenthesis pair "()" . And you need to omit all the empty parenthesis pairs that don’t原创 2020-10-06 18:05:52 · 156 阅读 · 0 评论 -
LeetCode C++ 129. Sum Root to Leaf Numbers【Tree/DFS】中等
Given a binary tree containing digits from 0-9 only, each root-to-leaf path could represent a number.An example is the root-to-leaf path 1->2->3 which represents the number 123 . Find the total sum of all root-to-leaf numbers.Note: A leaf is a node原创 2020-10-04 23:03:16 · 165 阅读 · 0 评论 -
LeetCode C++ 199. Binary Tree Right Side View【Tree/DFS/BFS】中等
Given a binary tree, imagine yourself standing on the right side of it, return the values of the nodes you can see ordered from top to bottom.Example:Input: [1,2,3,null,5,null,4]Output: [1, 3, 4]Explanation: 1 <--- / \2 3原创 2020-09-29 02:15:16 · 217 阅读 · 0 评论 -
LeetCode C++ 116. Populating Next Right Pointers in Each Node【Tree/DFS/BFS】中等
You are given a perfect binary tree where all leaves are on the same level, and every parent has two children. The binary tree has the following definition:struct Node { int val; Node *left; Node *right; Node *next;}Populate each next原创 2020-09-29 01:21:51 · 169 阅读 · 0 评论 -
LeetCode C++ 117. Populating Next Right Pointers in Each Node II【Tree/DFS/BFS】中等
Given a binary treestruct Node { int val; Node *left; Node *right; Node *next;}Populate each next pointer to point to its next right node. If there is no next right node, the next pointer should be set to NULL.Initially, all next pointers are原创 2020-09-29 01:20:01 · 197 阅读 · 0 评论 -
LeetCode C++ 968. Binary Tree Cameras【Tree/DFS】困难
Given a binary tree, we install cameras on the nodes of the tree.Each camera at a node can monitor its parent, itself, and its immediate children.Calculate the minimum number of cameras needed to monitor all nodes of the tree.Example 1:Input: [0,0,nul原创 2020-09-27 23:56:26 · 386 阅读 · 0 评论 -
LeetCode C++ 563. Binary Tree Tilt【Tree/DFS】简单
Given a binary tree, return the tilt of the whole tree.The tilt of a tree node is defined as the absolute difference between the sum of all left subtree node values and the sum of all right subtree node values. Null node has tilt 0 .The tilt of the whole原创 2020-09-26 10:25:15 · 161 阅读 · 0 评论 -
LeetCode C++ 113. Path Sum II【Tree/DFS】中等
Given a binary tree and a sum, find all root-to-leaf paths where each path’s sum equals the given sum.Note: A leaf is a node with no children.Example: Given the below binary tree and sum = 22 , 5 / \ 4 8 / / \ 11 13 4 / \ /原创 2020-07-08 14:36:06 · 186 阅读 · 0 评论