前往小程序,Get更优阅读体验!
立即前往
首页
学习
活动
专区
工具
TVP
发布

树🌲

作者头像
宇宙之一粟
发布2022-05-13 14:39:08
2020
发布2022-05-13 14:39:08
举报
文章被收录于专栏:宇宙之_一粟

再谈链表

Linked List 就是特殊化的Tree

Tree 就是特殊化的图

代码语言:javascript
复制
class TreeNode:
    def __init__(self, val):
        self.val = val
        self.left, self.right = None, None
代码语言:javascript
复制
public class TreeNode {
    public int val;
    public TreeNode left, right;
    public TreeNode(int val) {
        this.val = val;
        this.left = null;
        this.right = null;
    }
}
代码语言:javascript
复制
struct TreeNode {
    int val;
    TreeNode *left;
    TreeNode *right;
    TreeNode(int x): val(x), left(NULL), right(NULL) {}
}

二叉搜索树(二叉查找树)

  1. 左子树上所有结点的值均小于它的根结点的值;
  2. 右子树上所有结点的值均大于它的根结点的值;
  3. Recursively,左、右子树也分别为二叉查找树

缺点:退化 -- > 链表

红黑树 Red-Black Tree(Java标准库)

Splay Tree

AVL Tree

KD Tree

题目练习

验证二叉搜索树

方法一:In-order --> array 查看是否是升序 O(n)

方法二:Recursion: validate(..., min, max) O(n)

Max <-- validate(node.left)

Min <-- valadate(node.rigtht)

Max<root , min >root

代码语言:javascript
复制
def isValidBST(self, root):
    inorder = self.inorder(root)
    return inorder == list(sorted(set(inorder)))
  
def inorder(self, root):
    if root is None:
        return []
    return self.inorder(root.left) + [root.val] + self.inorder(root.right)
代码语言:javascript
复制
def isValidBST(self, root):
    self.prev = None
    return self.helper(root)
  
def helper(self, root):
    if root is None:
        return True
    if not self.helper(root.left):
        return False
    if self.prev and self.prev.val >= root >= root.val:
        return False
    self.prev = root
    return self.helper(root.right)
代码语言:javascript
复制
public boolean isValid(TreeNode root, Integer min, Integer max) {
    if(root == null) return true;
    if(min != null && root.val <= min) return false;
    if(max != null && root.val >= max) return false;
  
    return isValid(root.left, min, root.val) && isValid(root.right, root.val, max);
}
本文参与 腾讯云自媒体同步曝光计划,分享自作者个人站点/博客。
原始发表:2022-05-13,如有侵权请联系 cloudcommunity@tencent.com 删除

本文分享自 作者个人站点/博客 前往查看

如有侵权,请联系 cloudcommunity@tencent.com 删除。

本文参与 腾讯云自媒体同步曝光计划  ,欢迎热爱写作的你一起参与!

评论
登录后参与评论
0 条评论
热度
最新
推荐阅读
目录
  • 再谈链表
      • 二叉搜索树(二叉查找树)
      • 题目练习
      领券
      问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档