树
超喜欢榴莲吖
许愿未来温暖阳光,满身宠爱
展开
专栏收录文章
- 默认排序
- 最新发布
- 最早发布
- 最多阅读
- 最少阅读
-
99. 恢复二叉搜索树
二叉搜索树中的两个节点被错误地交换。 请在不改变其结构的情况下,恢复这棵树。 这道题的关键是找到两个被错误交换的节点。 对于二叉搜索树,一定要把握住各个遍历对应的特征。 二叉搜索树+中序遍历–> 可以得到一个有序数组。那么问题转化为:在一个有序数组中,将两个数交换后,怎样找到这两个数。例如,[1 2 3 4 5 6 7 8] ,如果变成 [1 2 6 4 5 3 7 8],那么这两个数的特点是 6>4,5>3。 方法一:显示中序遍历 因此,最直接的方法是: 1)中序遍历得到有序数组 2)原创 2020-08-10 08:40:31 · 164 阅读 · 0 评论 -
336. 回文对
题目 题解: class Solution { public boolean isPalindrome(String s, int left, int right) { int len = right - left + 1; for (int i = 0; i < len / 2; i++) { if (s.charAt(left + i) != s.charAt(right - i)) { retu原创 2020-08-08 09:35:20 · 193 阅读 · 0 评论 -
337. 打家劫舍 III
题目 树上DP。 对于树的一个节点开始,它的子树可以盗取的最大金额由它的两个状态组成: 该点被盗,记为f(i) 该点不被盗,记为g(i) 则 fff 和 ggg 由其左右节点的状态决定: f(i)=node.val+g(l)+g(r)f(i)=node.val+g(l)+g(r)f(i)=node.val+g(l)+g(r) g(i)=maxg(i)=maxg(i)=max{f(l),g(l)}+max\lbrace f(l),g(l)\rbrace+max{f(l),g(l)}+max{f(r),g原创 2020-08-05 09:32:23 · 205 阅读 · 0 评论 -
114. 二叉树展开为链表
题目 给定一个二叉树,原地将它展开为一个单链表。 方法一:前序遍历 递归前序遍历记录节点,然后重新展成单链表。 /** * Definition for a binary tree node. * public class TreeNode { * int val; * TreeNode left; * TreeNode right; * TreeNode() {} * TreeNode(int val) { this.val = val; } *原创 2020-08-02 22:44:58 · 141 阅读 · 0 评论 -
Leetcode--二叉树合集(简单)
面试题 04.02. 最小高度树 题目 要使二叉搜索树高度最小,应该尽量平衡两边高度,当树中的任意结点的左右子树高度差都不超过 1 时,整棵树的深度最小 --> 即创建平衡二叉树。原创 2020-07-30 07:55:00 · 266 阅读 · 0 评论 -
leetcode--trie树
208. 实现 Trie (模板题) 题目 class TrieNode{ boolean isWord; TrieNode[] children=new TrieNode[26]; TrieNode() {} } class Trie { TrieNode root; /** Initialize your data structure here. */ public Trie() { root=new TrieNode();原创 2020-07-19 20:40:00 · 177 阅读 · 0 评论 -
不同的二叉搜索树
给定一个整数 n,求以 1 … n 为节点组成的二叉搜索树有多少种? 示例: 输入: 3 输出: 5 解释: 给定 n = 3, 一共有 5 种不同结构的二叉搜索树: 题解 要构建不同的二叉树,只要根节点不同,那么一定是不同的二叉树。因此,考虑以每个数值为根节点,构建左右子树不同的二叉树,最后可以得到所有二叉树。 G(n): 长度为 n 的序列能构成的不同二叉搜索树的个数。 F(i, n): 以 i 为根、序列长度为 n 的不同二叉搜索树个数 (1≤i≤n)。 最后需要求得:G(n) 其中,G(0)原创 2020-07-15 20:54:39 · 339 阅读 · 0 评论
分享