![](https://img-blog.csdnimg.cn/20201014180756925.png?x-oss-process=image/resize,m_fixed,h_64,w_64)
树
超喜欢榴莲吖
许愿未来温暖阳光,满身宠爱
展开
-
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 · 101 阅读 · 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 · 135 阅读 · 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 · 134 阅读 · 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 · 90 阅读 · 0 评论 -
Leetcode--二叉树合集(简单)
面试题 04.02. 最小高度树题目要使二叉搜索树高度最小,应该尽量平衡两边高度,当树中的任意结点的左右子树高度差都不超过 1 时,整棵树的深度最小 --> 即创建平衡二叉树。原创 2020-07-30 07:55:00 · 179 阅读 · 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 · 128 阅读 · 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 · 281 阅读 · 0 评论