首页 > TAG信息列表 > TreeNode
二叉树的层序遍历
给你二叉树的根节点 root ,返回其节点值的 层序遍历 。 (即逐层地,从左到右访问所有节点)。 示例 1: 输入:root = [3,9,20,null,null,15,7] 输出:[[3],[9,20],[15,7]] 示例 2: 输入:root = [1] 输出:[[1]] 示例 3: 输入:root = [] 输出:[] 提示: 树中节点数目在范围 [0, 2000] 内 -1000 <= Node二叉树序列化反序列化
Golang代码 package main import ( "fmt" "strconv" "strings" ) type Treenode struct { Val int Left, Right *Treenode } func Serialization(node *Treenode) string { if node == nil { return "nil" } tmpleetcode 637. Average of Levels in Binary Tree 二叉树的层平均值(简单)
一、题目大意 给定一个非空二叉树的根节点 root , 以数组的形式返回每一层节点的平均值。与实际答案相差 10-5 以内的答案可以被接受。 示例 1: 输入:root = [3,9,20,null,null,15,7] 输出:[3.00000,14.50000,11.00000] 解释:第 0 层的平均值为 3,第 1 层的平均值为 14.5,第 2 层的小米-2020-秋招-软件开发笔试
笔试 打印二叉树 一个重建二叉树+中序遍历打印的问题 麻烦的是C++中没有现成的替换字符串中子字符串的函数 #include <iostream> #include <vector> #include <stack> #include <string> using namespace std; struct TreeNode { char val; TreeNode* leftChild; TreeNode* rJava递归树(构建和收集子孙节点二种方式)
Java递归树(构建和收集子孙节点二种方式) TreeUtil 1.递归工具类:(构建递归树 且支持 通过 buildByRecursive方法 depth参数控制递归的层级深度 ) /** * @Description: 树节点 * @Author: 徐刘 * @Date: 2020/12/5 12:18 */ @Data public class TreeNode { <span class="leetcode 110. Balanced Binary Tree 平衡二叉树(简单)
一、题目大意 给定一个二叉树,判断它是否是高度平衡的二叉树。 本题中,一棵高度平衡二叉树定义为: 一个二叉树每个节点 的左右两个子树的高度差的绝对值不超过 1 。 示例 1: 输入:root = [3,9,20,null,null,15,7] 输出:true 示例 2: 输入:root = [1,2,2,3,3,null,null,4,4] 输出:falseleetcode1379. 找出克隆二叉树中的相同节点
原题链接:https://leetcode.cn/problems/find-a-corresponding-node-of-a-binary-tree-in-a-clone-of-that-tree/ 给你两棵二叉树,原始树 original 和克隆树 cloned,以及一个位于原始树 original 中的目标节点 target。 其中,克隆树 cloned 是原始树 original 的一个 副本 。 请找701.insert-into-a-binary-search-tree 二叉搜索树中的插入操作
没啥好说的,但是要注意连续两个if和if... else if之间的区别。 class Solution { public: TreeNode *insertIntoBST(TreeNode *root, int val) { if (root == nullptr) { TreeNode *res = new TreeNode(val); return res; }LeetCode 1339. Maximum Product of Splitted Binary Tree
原题链接在这里:https://leetcode.com/problems/maximum-product-of-splitted-binary-tree/ 题目: Given the root of a binary tree, split the binary tree into two subtrees by removing one edge such that the product of the sums of the subtrees is maximized. Return tleetcode 437. Path Sum III 路径总和 III(中等)
一、题目大意 给定一个二叉树的根节点 root ,和一个整数 targetSum ,求该二叉树里节点值之和等于 targetSum 的 路径 的数目。 路径 不需要从根节点开始,也不需要在叶子节点结束,但是路径方向必须是向下的(只能从父节点到子节点)。 示例 1: 输入:root = [10,5,-3,3,2,null,11,3,-2,null,LeetCode 226 翻转二叉树
/** * 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) {} *LeetCode 101 对称二叉树
/** * 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) {} *【二叉树】最近公共祖先专题
最近公共祖先(Lowest Common Ancestor) 北邮考研机试题 求两结点之间的最短路径长度 视频讲解 #include <iostream> #include <algorithm> #include <cstring> using namespace std; const int N = 1010; int n, m; int l[N], r[N], p[N]; int dist[N]; void dfs(int u, int d)654.maximum-binary-tree 最大二叉树
递归就好了,没啥好说的。 class Solution { private: int getMax(vector<int> &nums, int l, int r) { int m_index = l; for (int i = l; i < r; i++) { if (nums[i] >= nums[m_index]) m_index = i; }算法总结
1.展平二叉搜索树 给你一棵二叉搜索树,请 按中序遍历 将其重新排列为一棵递增顺序搜索树,使树中最左边的节点成为树的根节点,并且每个节点没有左子节点,只有一个右子节点。 题解:题都说了用中序遍历,用一个链表存储中序遍历的结果,然后将中序遍历中值放入创建的新树(中序遍历是先访问左子106.construct-binary-tree-inorder-and-postorder-traversal 从中序与后序遍历序列构造二叉树
大致思路,首先找到后序遍历序列的最后一个数,二叉树的根节点(root)就是这个值,然后在中序遍历序列里找到这个数所在的位置(假设索引为i),i左边的数,是根节点左子树的数值,i右边的数,是根节点的右子树,然后根据左子树和右子树的数量,划分后序遍历的序列,分别找出划分后的两个序列的根节点,然687. 最长同值路径
687. 最长同值路径 给定一个二叉树的 root ,返回 最长的路径的长度 ,这个路径中的 每个节点具有相同值 。 这条路径可以经过也可以不经过根节点。 两个节点之间的路径长度 由它们之间的边数表示。 示例 1: 输入:root = [5,4,5,1,1,5] 输出:2 示例 2: 输入:root = [1,4,5力扣 110. 平衡二叉树 [基础+优化]
110. 平衡二叉树 给定一个二叉树,判断它是否是高度平衡的二叉树。 本题中,一棵高度平衡二叉树定义为: 一个二叉树每个节点 的左右两个子树的高度差的绝对值不超过 1 。 示例 1: 输入:root = [3,9,20,null,null,15,7] 输出:true 示例 2: 输入:root = [1,2,2,3,3,null,null,4,4leetcode-998. 最大二叉树 II
998. 最大二叉树 II 图床:blogimg/刷题记录/leetcode/998/ 刷题代码汇总:https://www.cnblogs.com/geaming/p/16428234.html 题目 思路 看到树就要想到递归。 解法 /** * Definition for a binary tree node. * struct TreeNode { * int val; * TreeNode *left; *算法总结
1.二叉树的右侧视图 给定一个二叉树的 根节点 root,想象自己站在它的右侧,按照从顶部到底部的顺序,返回从右侧所能看到的节点值。 题解:根之前二叉树解题类似,用广度优先搜索或者深度优先搜索遍历二叉树,这个题就是取每一层的最后一个元素,使用一个队列存储每一层的结点完成对层结点遍历【力扣算法题】寻找树中最左下结点的值
题目: 给定一个二叉树的 根节点 root,请找出该二叉树的 最底层 最左边 节点的值。 假设二叉树中至少有一个节点。 样例示例 1:输入: root = [2,1,3]输出: 1示例 2: 输入: [1,2,3,4,null,5,6,null,null,7]输出: 7来源:力扣(LeetCode)链接:https://leetcode.cn/problems/find-bo2022-8-22 剑指offer-优先队列-每日一题-二叉树-搜索/递归
剑指 Offer II 060. 出现频率最高的 k 个数字 难度中等36收藏分享切换为英文接收动态反馈 给定一个整数数组 nums 和一个整数 k ,请返回其中出现频率前 k 高的元素。可以按 任意顺序 返回答案。 1 class Solution { 2 public int[] topKFrequent(int[] nums, i655. 输出二叉树
655. 输出二叉树 给你一棵二叉树的根节点 root ,请你构造一个下标从 0 开始、大小为 m x n 的字符串矩阵 res ,用以表示树的 格式化布局 。构造此格式化布局矩阵需要遵循以下规则: 树的 高度 为 height ,矩阵的行数 m 应该等于 height + 1 。 矩阵的列数 n 应该等于 2height+1 - 1二叉树的统一迭代法遍历
中序遍历 中序遍历无法直接利用栈进行遍历,需要利用指针进行遍历,对栈中的节点进行操作。 对于中间节点,如果指针遍历到了,但没有进行处理,就再push()一个nullptr,作为标记,说明这个节点只是遍历过了,但是没有处理。事实上,每个待处理(放入vector)中的节点,其在栈中的上层元素都会是nullptr2022-8-20 每日一题-二叉树-递归
654. 最大二叉树 难度中等499收藏分享切换为英文接收动态反馈 给定一个不重复的整数数组 nums 。 最大二叉树 可以用下面的算法从 nums 递归地构建: 创建一个根节点,其值为 nums 中的最大值。 递归地在最大值 左边 的 子数组前缀上 构建左子树。 递归地在最大值