LeetCode#树
看这个题真好看
机器学习+深度学习+leetcode+随时准备转行
展开
-
二叉搜索树转化为排序的双向链表(bst)和Leetcode108 将有序数组转平衡二叉树
方法1:地柜 我不知道为啥,lintcode就是报空指针,同一个例子,我跑就不报,他跑就报,实在是有病。 process作用就是返回一个排序后的链表,那么left得到的就是左边排序的链表,right就是得到右边的,如果只有一个节点那么就是这个节点了对吧,和归并排序一个思想(merge,,虽然我有点忘了归并拍虚了)。 Tpublic class Solution { /** * @...原创 2019-10-20 12:42:32 · 242 阅读 · 0 评论 -
Leetcode297 树的序列号和反序列花
左神讲过,可`以采用先序遍历,后续和中序,其实怎么序列就怎么反过来 /** * Definition for a binary tree node. * public class TreeNode { * int val; * TreeNode left; * TreeNode right; * TreeNode(int x) { val = x; } ...原创 2019-10-06 16:10:06 · 441 阅读 · 0 评论 -
Leetcode110平衡二叉树
这个题,用到一个套路就是树形BP,这个套路进阶才讲。重点时列出所有的可能性,记住递归遍历二叉树无论怎么遍历,都是访问每一个节点三次,所以可以统计信息返回。当然自己用栈实现的遍历二叉树不一定时三次 /** * Definition for a binary tree node. * public class TreeNode { * int val; * TreeNode l...原创 2019-10-07 10:20:40 · 153 阅读 · 0 评论 -
LeetCode98验证二叉搜索树
方法1:中序遍历是升序的就是二叉搜索树,所以可以遍历一遍,然后判断即可,可以用队列存放遍历元素,用数组是不行的,因为大小不知道。。 /** * Definition for a binary tree node. * public class TreeNode { * int val; * TreeNode left; * TreeNode right; * ...原创 2019-10-07 16:59:00 · 96 阅读 · 0 评论 -
验证完全二叉树
分几个情况:1.如果遇到有右子树没有左子树直接返回false 2.如果没有右子树,或者都没有,开启一个新的状态,判断他后面所有的节点是否是叶子节点,此程序包括了测试 import java.util.LinkedList; import java.util.Queue; import java.util.Stack; import javax.swing.tree.TreeNode; pub...原创 2019-10-07 17:02:21 · 474 阅读 · 0 评论 -
Leetcode222求完全二叉树节点的个数
以根节点右子树的左边界是否等于高度为分界,如果等于,左子树一定满了,可以用公式计算出来,如果不等于,那么右子树满了,计算出来,在递归计算另一部分不满的,递归的baseline就是high==level的时候,因为递归的最后就是一个节点。 /** * Definition for a binary tree node. * public class TreeNode { * int v...原创 2019-10-07 21:26:07 · 106 阅读 · 0 评论 -
Leetcode380插入删除获取随机元素(双map解法)
双map解法,不要自己去实现哈希表,改结构,哈希表是等概率分布,是大样本的情况下,小样本可不一定满足,你不能保证每个位置都有元素,如果重新随机,那么时间复杂度是不是就不是o1了呢,所以用java自带的map即可 class RandomizedSet { /** Initialize your data structure here. */ int size; HashM...原创 2019-10-08 20:05:47 · 70 阅读 · 0 评论