226. 翻转二叉树 - 力扣(LeetCode) (leetcode-cn.com) 思路 递归: 1. 从根节点开始,递归遍历整个树。 2. 对根节点的左节点进行翻转,对根节点的右节点进行翻转。 3. 如果根节点左右节点已经翻转完成,我们只需要互换此根节点的左右节点即可。 /** * Definition for a binary t
原题链接在这里:https://leetcode.com/problems/lowest-common-ancestor-of-a-binary-tree-iv/ 题目: Given the root of a binary tree and an array of TreeNode objects nodes, return the lowest common ancestor (LCA) of all the nodes in nodes. All the nodes will
原题链接在这里:https://leetcode.com/problems/lowest-common-ancestor-of-a-binary-tree-ii/ 题目: Given the root of a binary tree, return the lowest common ancestor (LCA) of two given nodes, p and q. If either node p or q does not exist in the tree, ret
L2-014 列车调度 这个题的话,可以用贪心的思想,当新的火车进站时,保证这列火车一定停靠在刚刚比他大的最小的数的后面,由于数据量比较大,我们可以考虑使用二分查找来寻找符合要求的那个数即可 #include<stdio.h> int train[100100]; int a[100100]; int len=0; int erfen(int x
题目表述 给你二叉树的根节点 root ,返回其节点值的 层序遍历 。 (即逐层地,从左到右访问所有节点)。 广度优先搜索 首先让根节点入队列,然后遍历队列。 每次循环开始,计算出队列大小,当前的队列大小size就是每一层的节点数。循环这size个节点,依次弹出队列,然后判断当前节点的左右节
二叉树最大深度 https://leetcode-cn.com/problems/maximum-depth-of-binary-tree/ /** * Definition for a binary tree node. * type TreeNode struct { * Val int * Left *TreeNode * Right *TreeNode * } */ func maxDepth(root *TreeNode) int { if roo
二叉树的常见操作及代码(日常更新) 主要操作: 二叉树的创建 遍历:前序,中序,后序(递归与非递归),层次 求高度 是否为对称二叉树 是否为同一二叉树 import java.util.ArrayList; import java.util.LinkedList; import java.util.Queue; import java.util.Stack; public class BinaryTree
剑指offer(68) 剑指 Offer 68 - II. 二叉树的最近公共祖先 给定一个二叉树, 找到该树中两个指定节点的最近公共祖先。 百度百科中最近公共祖先的定义为:“对于有根树 T 的两个结点 p、q,最近公共祖先表示为一个结点 x,满足 x 是 p、q 的祖先且 x 的深度尽可能大(一个节点也可以是它自
https://leetcode-cn.com/problems/binary-tree-preorder-traversal/ https://leetcode-cn.com/problems/binary-tree-inorder-traversal/ https://leetcode-cn.com/problems/binary-tree-postorder-traversal/ /** * Definition for a binary tree node. * type TreeNod
今天来谈二叉树的构造,主要有以下几个问题: 最大二叉树 前序和中序构造二叉树 后序和中序构造二叉树 前序和后序构造二叉树 二叉树构造模板,分治模式: 构造整棵树 = 根节点 + 构造左子树 + 构造右子树 一、最大二叉树 class Solution { public TreeNode constructMaximumBin
题目描述: 解题思路: 分叉点:其实找最近的公共祖先,就是找分叉点,对于二叉搜索树的分叉点是特别好找的。 两次遍历:第一次遍历记录根节点到p的路径,第二次记录到q的路径,根据路径,找出分叉点 一次遍历:根节点要么都大于p,q,要么都小于p,q那么剩下的情况,就是根节点是p或者q或者p,q在两侧了
验证二叉搜索树 给你一个二叉树的根节点 root ,判断其是否是一个有效的二叉搜索树。 有效 二叉搜索树定义如下: 节点的左子树只包含 小于 当前节点的数。 节点的右子树只包含 大于 当前节点的数。 所有左子树和右子树自身必须也是二叉搜索树。 示例 1: 输入:root = [
前言:今天来重点讲一下二叉树的“查”,二叉树也是一种数据存储方式,类比于数组来说,最基本的“查”应该有以下几种: 二叉树的大小即节点个数 二叉树的最大深度和最小深度 二叉树的最近公共祖先 方法论: 本文中主要用到了两种思维模式,如下: 是否遍历一遍二叉树就可以得到结果,如果可以
二叉搜索树中第K小的元素 题目描述:给定一个二叉搜索树的根节点 root ,和一个整数 k ,请你设计一个算法查找其中第 k 个最小元素(从 1 开始计数)。 示例说明请见LeetCode官网。 来源:力扣(LeetCode) https://leetcode-cn.com/problems/kth-smallest-element-in-a-bst/ 著作权归领扣
二叉树的下一个节点 给定一棵二叉树的其中一个节点,请找出中序遍历序列的下一个节点。 注意: 如果给定的节点是中序遍历序列的最后一个,则返回空节点; 二叉树一定不为空,且给定的节点一定不是空节点; 数据范围 树中节点数量 [0,100]。 样例 假定二叉树是:[2, 1, 3, null, null,
完全二叉树的节点个数 题目描述:给你一棵 完全二叉树 的根节点 root ,求出该树的节点个数。 完全二叉树 的定义如下:在完全二叉树中,除了最底层节点可能没填满外,其余每层节点数都达到最大值,并且最下面一层的节点都集中在该层最左边的若干位置。若最底层为第 h 层,则该层包含 1~ \(2^{h
LeetCode 94. 二叉树的中序遍历 递归写法 /** * 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),
二叉树的右视图 题目描述:给定一个二叉树的 根节点 root,想象自己站在它的右侧,按照从顶部到底部的顺序,返回从右侧所能看到的节点值。 示例说明请见LeetCode官网。 来源:力扣(LeetCode) 链接:https://leetcode-cn.com/problems/binary-tree-right-side-view/ 著作权归领扣网络所有。商业
你一个整数 n ,请你生成并返回所有由 n 个节点组成且节点值从 1 到 n 互不相同的不同 二叉搜索树 。可以按 任意顺序 返回答案。 示例 1: 输入:n = 3 输出:[[1,null,2,null,3],[1,null,3,2],[2,1,3],[3,1,null,null,2],[3,2,null,1]] 示例 2 输入:n = 1 输出:[[1]] 来源:力扣(LeetCode) 链
零.节点类 /** * Definition for a binary tree node. * public class TreeNode { * int val; * TreeNode left; * TreeNode right; * TreeNode() {} * TreeNode(int val) { this.val = val; } * TreeNode(int val, TreeNode left, TreeNode rig
1 二叉树的前中后序遍历(前:根-左-右,中:左-根-右,后:左-右-根) 二叉树中的最大路径和 路径 被定义为一条从树中任意节点出发,沿父节点-子节点连接,达到任意节点的序列。同一个节点在一条路径序列中 至多出现一次 。该路径 至少包含一个 节点,且不一定经过根节点。 路径和 是路径中各节点值
My BFS solution: /** * Definition for a binary tree node. * public class TreeNode { * int val; * TreeNode left; * TreeNode right; * TreeNode() {} * TreeNode(int val) { this.val = val; } * TreeNode(int val, TreeNode left, T
声明一个Model类: public class TreeNode { /// <summary> /// 子id /// </summary> public string Id { get; set; } /// <summary> /// 父id /// </summary> public string ParentId { get; set; } /// <summa
108. 将有序数组转换为二叉搜索树 递归 class Solution { public TreeNode sortedArrayToBST(int[] nums) { return build(nums, 0, nums.length - 1); } private TreeNode build(int[] nums, int s, int e) { //递归终止条件 if (s > e) ret
//二叉树的最小深度 /* * 给定一个二叉树,找出其最小深度 * 最小深度是从根节点到最近叶子节点的最短路径上的节点数量 * */ public class P17 { static class TreeNode{ int val; TreeNode left; TreeNode right; TreeNode(int val, Tre