树
dezhonger
这个作者很懒,什么都没留下…
展开
-
Leetcode450
删除BST中的一个节点,我起初写了非常复杂的版本,考虑了很多种情况。还错了很多次。。直接看大佬的代码吧 public TreeNode deleteNode(TreeNode root, int key) { if (root == null) return null; if (key > root.val) root.right = dele...原创 2020-01-25 21:21:24 · 223 阅读 · 0 评论 -
Leetcode1145
给一颗二叉树,a选x节点染为红色,问b是否可以选一个节点y染成蓝色,使得按照一定的规则下b win。规则:每个选手每次可以选择一个已染色的邻居节点染成自己的颜色,如果没有这样的节点,就跳过这一回合。最后谁的节点多,谁赢。 节点数为奇数。sol:给定了x节点,那么为了最大化b能染得节点数,我们只需要考虑三个节点,x的父节点和x的两个子节点。 int p, l, ...原创 2020-01-25 19:59:15 · 170 阅读 · 0 评论 -
Leetcode971
通过翻转二叉树的一些节点,使得前序遍历为v数组一些优雅的解答递归写法: List<Integer> res = new ArrayList<>(); int i = 0; public List<Integer> flipMatchVoyage(TreeNode root, int[] v) { ret...原创 2020-01-25 18:51:12 · 160 阅读 · 0 评论 -
Leetcode173
实现一个BST的迭代器也就是说左节点的值小于根,右节点的值大于根import java.util.Stack;/** * Created by dezhonger on 2020/01/24 * * @author dezhonger * @since 2020/01/24 * Leetcode173 */public class BSTIterator { ...原创 2020-01-24 18:27:57 · 125 阅读 · 0 评论 -
Leetcode105/106
给出一颗树的前序和中序,求原树的形状。递归解法:根据前序遍历,找到root, 根据root在中序的位置,位置左边是root的左子树,root的右边数root的右子树。public class Leetcode0105 { public TreeNode buildTree(int[] preorder, int[] inorder) { int len...原创 2020-01-24 17:48:20 · 161 阅读 · 0 评论 -
Leetcode 998
构造最大数,题目的意思是给出一个序列A按照题目的构造方法给出一个树,现在在序列A的最后加一个树,求现在的树的样子sol:首先加的树是在序列最后,所以应该是去递归树的右边,找到对应的位置后,注意到最后加的数在最后,所以应该是该位置的右子树,然后比它小的数在它左边,应为它的左子树需要多想一下。递归版: public TreeNode ins...原创 2020-01-12 01:01:46 · 221 阅读 · 0 评论 -
Leetcode 117
和1116差不多,只不过是一颗普通的二叉树,不是完全二叉树 public Node connect(Node root) { if (root == null) return null; Node head = null; Node pre = null; Node cur = root; while (c...原创 2020-01-05 02:41:45 · 134 阅读 · 0 评论 -
Leetcode 116
给一颗完全二叉树的每个节点添加右指针递归: public Node connect(Node root) { if(root == null) return null; if(root.left != null){ root.left.next = root.right; ...原创 2020-01-05 02:31:26 · 175 阅读 · 0 评论 -
Leetcode 652
找到相同的子树,返回根节点通过dfs,把所有的树都转化为一个String,然后map存储,得到答案。关键点在于怎么判断两棵树相同,这里巧妙地把树转化为String,从而快速判断 public List<TreeNode> findDuplicateSubtrees(TreeNode root) { List<TreeNode>...原创 2020-01-05 00:15:20 · 107 阅读 · 0 评论 -
Leetcode 103
层次&zigzag遍历二叉树dfs: public List<List<Integer>> zigzagLevelOrder(TreeNode root) { List<List<Integer>> res = new ArrayList<>(); if (root == nu...原创 2020-01-04 23:24:05 · 71 阅读 · 0 评论 -
Leetcode 109
有序链表构造平衡二叉树。递归的思路,感觉比较直接一些。 ListNode cur; public TreeNode sortedListToBST(ListNode head) { if (head == null) return null; int size = 0; ListNode t = head; ...原创 2020-01-04 17:30:56 · 101 阅读 · 0 评论 -
Leetcode865
求最深的叶子节点的最近公共祖先我的解法很懒,就是先找到最深的节点集合,然后一个个地merge int depth = -1; Map<TreeNode, TreeNode> map = new HashMap<>(); Map<TreeNode, Integer> deMap = new HashMap<>(); ...原创 2019-12-31 12:55:45 · 200 阅读 · 1 评论 -
Leetcode558
四叉树或合并,递归合并就行了,记着值相同的时候要把四个叶子节点合并 public Node intersect(Node quadTree1, Node quadTree2) { if (quadTree1.isLeaf) return quadTree1.val ? quadTree1 : quadTree2; if (quadTree2.isLeaf...原创 2019-12-31 01:05:22 · 233 阅读 · 0 评论 -
Leetcode958
判断是否是完全二叉树https://leetcode.com/problems/check-completeness-of-a-binary-tree/我的解法:使用队列,当遇到存在孩子节点为null的时候,置标记位为true,队列里的节点的孩子节点都应该为null public boolean isCompleteTree(TreeNode root) { ...原创 2019-12-31 00:33:56 · 206 阅读 · 1 评论 -
Leetcode669
https://leetcode.com/problems/trim-a-binary-search-tree/删除一颗BST的不在[l,r]l里的结点。ShareGiven a binary search tree and the lowest and highest boundaries asLandR, trim the tree so that all its el...原创 2019-12-29 23:53:20 · 117 阅读 · 0 评论 -
Leetcode1008
根据前序编列构造BSTO(N)递归非递归。todohttps://leetcode.com/problems/construct-binary-search-tree-from-preorder-traversal/discuss/?currentPage=1&orderBy=most_votes&query=...原创 2019-12-29 23:35:27 · 113 阅读 · 0 评论 -
Leetcode 951
判断二叉树是否可通过翻转部分节点后相同递归很好写,主要学习一下迭代的写法https://leetcode.com/problems/flip-equivalent-binary-trees/discuss/200514/JavaPython-3-DFS-3-liners-and-BFS-with-explanation-time-and-space%3A-O(n)....原创 2019-12-29 23:21:52 · 100 阅读 · 0 评论 -
Leetcode 894
生成所有的满二叉树sol:注意到没有偶数节点个数的满二叉树递归:class Solution { public List<TreeNode> allPossibleFBT(int N) { List<TreeNode> res = new ArrayList<>(); if(N==1){ ...原创 2019-12-29 23:06:47 · 130 阅读 · 0 评论