首页 > 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" } tmp

leetcode 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* r

Java递归树(构建和收集子孙节点二种方式)

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] 输出:false

leetcode1379. 找出克隆二叉树中的相同节点

原题链接: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 t

leetcode 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,4

leetcode-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-bo

2022-8-22 剑指offer-优先队列-每日一题-二叉树-搜索/递归

剑指 Offer II 060. 出现频率最高的 k 个数字 难度中等36收藏分享切换为英文接收动态反馈 给定一个整数数组 nums 和一个整数 k ,请返回其中出现频率前 k 高的元素。可以按 任意顺序 返回答案。 1 class Solution { 2 public int[] topKFrequent(int[] nums, i

655. 输出二叉树

655. 输出二叉树 给你一棵二叉树的根节点 root ,请你构造一个下标从 0 开始、大小为 m x n 的字符串矩阵 res ,用以表示树的 格式化布局 。构造此格式化布局矩阵需要遵循以下规则: 树的 高度 为 height ,矩阵的行数 m 应该等于 height + 1 。 矩阵的列数 n 应该等于 2height+1 - 1

二叉树的统一迭代法遍历

中序遍历 中序遍历无法直接利用栈进行遍历,需要利用指针进行遍历,对栈中的节点进行操作。 对于中间节点,如果指针遍历到了,但没有进行处理,就再push()一个nullptr,作为标记,说明这个节点只是遍历过了,但是没有处理。事实上,每个待处理(放入vector)中的节点,其在栈中的上层元素都会是nullptr

2022-8-20 每日一题-二叉树-递归

654. 最大二叉树 难度中等499收藏分享切换为英文接收动态反馈 给定一个不重复的整数数组 nums 。 最大二叉树 可以用下面的算法从 nums 递归地构建: 创建一个根节点,其值为 nums 中的最大值。 递归地在最大值 左边 的 子数组前缀上 构建左子树。 递归地在最大值