leetcodeBinaryTree
口木西成
沙坡村男子技术学院,java后台开发
展开
-
501二叉搜索树中的众数
题目描述 给定一个有相同值的二叉搜索树(BST),找出 BST 中的所有众数(出现频率最高的元素)。 假定 BST 有如下定义: 结点左子树中所含结点的值小于等于当前结点的值 结点右子树中所含结点的值大于等于当前结点的值 左子树和右子树都是二叉搜索树 例如: 给定 BST [1,null,2,2],返回[2]. 提示:如果众数超过1个,不需考虑输出顺序 思路分析 BST中序遍历是升序序列,...原创 2020-03-06 15:30:33 · 74 阅读 · 0 评论 -
404左叶子之和
题目描述 计算给定二叉树的所有左叶子之和。 思路分析 递归终止的条件是什么?一次递归中要进行什么操作?递归想要返回什么信息? 基于前序递归模板。 终止条件:节点为空 递归中操作:为左叶节点时,将节点值计入sum 可以用基础的前序模板,定义全局变量sum; 也可以将前序模板返回值改成int,则递归想要返回信息就是 左右子树的左叶节点和 + 当前左叶节点和。 代码实现 private in...原创 2020-03-06 15:24:27 · 94 阅读 · 0 评论 -
257二叉树的所有路径
题目描述 给定一个二叉树,返回所有从根节点到叶子节点的路径。 说明: 叶子节点是指没有子节点的节点。 示例: 输出: [“1->2->5”, “1->3”] 解释: 所有根节点到叶子节点的路径为: 1->2->5, 1->3 思路分析 递归终止的条件是什么?一次递归中要进行什么操作?递归想要返回什么信息? 基于前序递归模板。 终止条件:节点为空 递...原创 2020-03-06 15:19:37 · 113 阅读 · 0 评论 -
230二叉搜索树中第K个小的元素
题目描述 给定一个二叉搜索树,编写一个函数 kthSmallest 来查找其中第 k 个最小的元素。 说明: 你可以假设 k 总是有效的,1 ≤ k ≤ 二叉搜索树元素个数。 思路分析 BST中序遍历升序的特性,基于中序遍历改。 递归终止的条件是什么?一次递归中要进行什么操作?递归想要返回什么信息? 终止条件:结点为空 递归中操作:count记录当前为第n个...原创 2020-03-06 15:15:04 · 87 阅读 · 0 评论 -
100相同的树
题目描述 给定两个二叉树,编写一个函数来检验它们是否相同。 如果两个树在结构上相同,并且节点具有相同的值,则认为它们是相同的。 思路分析 思路一:看到用例,就想到最麻烦的做法。先把两个树用层次遍历存储为数组,数组进行比较。 思路二:递归。首先判断 p、q为空的情况,然后判断它们的值是否相等。若以上判断通过,则递归对子结点做同样操作。 代码实现 /** * 递归解法 * @...原创 2020-02-29 17:50:00 · 83 阅读 · 0 评论 -
114二叉树展开为链表
题目描述 给定一个二叉树,原地将它展开为链表。 思路分析 思路一:每次都将root的右子树转移到左子树的最右结点。 思路二:如果用前序递归解,将root的右子树存储,再递归转移,会超时。所以可以使用后序遍历解,这样就不会有子树结点问题。 代码实现 /** * 非递归解法 * * @param root */ public void fla...原创 2020-02-29 17:49:29 · 79 阅读 · 0 评论 -
107二叉树的层次遍历II
题目描述 给定一个二叉树,返回其节点值自底向上的层次遍历。 (即按从叶子节点所在层到根节点所在的层,逐层从左向右遍历) 思路分析 还是层次遍历的写法,递归非递归都可。 最后用Collections.reverse()翻转list,或者在建立链表时用LinkedList,用addFirst的api,每次都在首部增加list。 代码实现 public List<List<Integ...原创 2020-02-29 17:48:49 · 91 阅读 · 0 评论 -
111二叉树的最小深度
题目描述 给定一个二叉树,找出其最小深度。 最小深度是从根节点到最近叶子节点的最短路径上的节点数量。 说明: 叶子节点是指没有子节点的节点。 思路分析 二叉树的题,基本都能用递归解答,基础模板就是前中后序遍历。基于此,进行分析,递归终止的条件是什么?一次递归中要进行什么操作?递归想要返回什么信息? 代码实现 public int minDepth(TreeNode root) { ...原创 2020-02-29 17:48:17 · 84 阅读 · 0 评论 -
112路径总和
题目描述 给定一个二叉树和一个目标和,判断该树中是否存在根节点到叶子节点的路径,这条路径上所有节点值相加等于目标和。 说明: 叶子节点是指没有子节点的节点。 思路分析 进行分析,递归终止的条件是什么?一次递归中要进行什么操作?递归想要返回什么信息? 终止条件:结点为空 递归中操作:sum减去当前结点值,当sum为0且当前为叶子节点返回true 递归返回信息:左右子树中是否有符合条件的路径 代码实现...原创 2020-02-29 17:47:31 · 59 阅读 · 0 评论