二叉树
文章平均质量分 55
王马软
因为原地不动,便永远地下沉
展开
-
PAT.1143 Lowest Common Ancestor
给定一棵BST的前序遍历,根据若干查询给出两节点的最低公共祖先(Lowest Common Ancestor)。还是一贯的套路,根据前序中序建树,然后从根开始同时搜索两个节点,找到分叉点即可。原创 2022-09-16 16:58:58 · 590 阅读 · 1 评论 -
PAT.1135 Is It A Red-Black Tree
哈哈,红黑树。第一眼看过去被吓到了,还以为要把红黑树的几个基本操作都写出来。定睛一看发现还是一道建树的题,只不过建完树要根据红黑树的定义判断一下当前树是不是红黑树。这道题可以建树的基本前提是,红黑树是一种特殊的二叉搜索树,所以仍然保有中序有序的性质,因此给定前序遍历的同时可以通过排序得到中序遍历。递归建树的过程自然不必多说,这道题唯一的特点无非就是红黑树的判断。根节点必须为黑、所有节点非红即黑、所有Null节点为黑这三点的难度约等于没有。原创 2022-09-15 14:35:47 · 349 阅读 · 0 评论 -
PAT.1127 ZigZagging on a Tree
哈哈,又是树。最近老是遇到树,对于自底向上递归建树的策略已经熟稔了。题目给出树的中序遍历和后序遍历,要求你确定这棵树,然后给出这棵树的zigzag遍历(正如其名,就是从左到右、从右到左如此往复的层序遍历)。想想一般情况下的层序遍历用队列就可以很容易实现,那现在要两边整了————那就用deque吧。这样就可以看出来,zigzag层序遍历的实现仅仅在于pop的方向和push的先后以及push的方向,因此我们只要设置一个标志位,在两种状态间来回转换就可以了。原创 2022-09-08 12:21:18 · 203 阅读 · 0 评论 -
PAT.1123 Is It a Complete AVL Tree - AVL树
还就那个没有原创 2022-09-06 17:19:15 · 375 阅读 · 0 评论 -
PAT.1066 Root of AVL Tree - AVL树的构造
PAT.1066 Root of AVL Tree - AVL树的构造题目链接题目给出插入顺序,要求根据插入顺序构建AVL树,并给出AVL树最终的根。一下子想不到什么取巧的办法,老老实实构建AVL树吧。趁机复习一下AVL树的概念:AVL树是一种二叉排序树,且在插入的过程中通过旋转操作来实现平衡(即以任一节点为根,其左子树深度与右子树深度的差之绝对值不超过1)顺便再复习一下旋转的概念:旋转往往发生在形如(此处以RR失衡为例) root \ child1 \ child原创 2022-04-20 16:03:31 · 877 阅读 · 0 评论 -
PAT.1064 Complete Binary Search Tree - 二叉树的中序遍历与层序遍历
PAT.1064 Complete Binary Search Tree - 二叉树的中序遍历与层序遍历题目链接题干的意思是给你一个数组,根据数组建立一个完全的二叉搜索树,并打印其层序遍历。首先趁这个机会复习一下BST和CST的概念:通俗理解BST即是左子树中所有节点小于根节点,右子树中所有节点大于根节点的二叉树CST即是一棵完全二叉树,并在最底层从左填充若干节点的二叉树。根据题目给出的数列很容易想到预处理成升序,因为BST的中序遍历是升序的,得到中序遍历后我们要想办法将其向层序遍历转化。原创 2022-04-16 17:28:47 · 1200 阅读 · 0 评论 -
leetcode 872.叶子相似的树
leetcode 872.叶子相似的树题干请考虑一棵二叉树上所有的叶子,这些叶子的值按从左到右的顺序排列形成一个 叶值序列 。举个例子,如上图所示,给定一棵叶值序列为 (6, 7, 4, 9, 8) 的树。如果有两棵二叉树的叶值序列是相同,那么我们就认为它们是 叶相似 的。如果给定的两个根结点分别为 root1 和 root2 的树是叶相似的,则返回 true;否则返回 false 。示例 1:输入:ro原创 2021-05-10 16:46:18 · 186 阅读 · 0 评论 -
leetcode 938.二叉搜索树的范围和
leetcode 938.二叉搜索树的范围和题干给定二叉搜索树的根结点 root,返回值位于范围 [low, high] 之间的所有结点的值的和。示例 1:输入:root = [10,5,15,3,7,null,18], low = 7, high = 15输出:32示例 2:输入:root = [10,5,15,3,7,13,18,1,null,6], low = 6, high = 10输出:23提示:树中节点数目在范围 [1, 2 * 104] 内1 <= Node.val原创 2021-04-27 14:41:45 · 89 阅读 · 0 评论 -
leetcode 897.递增顺序搜索树 - 中序遍历
leetcode 897.递增顺序搜索树 - 中序遍历题干给你一棵二叉搜索树,请你 按中序遍历 将其重新排列为一棵递增顺序搜索树,使树中最左边的节点成为树的根节点,并且每个节点没有左子节点,只有一个右子节点。示例 1:输入:root = [5,3,6,2,4,null,8,1,null,null,null,7,9]输出:[1,null,2,null,3,null,4,null,5,null,6,null,7,null,8,null,9]示例 2:输入:root = [5,1,7]输出:[1,原创 2021-04-25 14:22:27 · 132 阅读 · 0 评论 -
leetcode 783.二叉搜索树节点最小距离
leetcode 783.二叉搜索树节点最小距离题干给你一个二叉搜索树的根节点 root ,返回 树中任意两不同节点值之间的最小差值 。示例 1:输入:root = [4,2,6,1,3]输出:1示例 2:输入:root = [1,0,48,null,null,12,49]输出:1 提示:树中节点数目在范围 [2, 100] 内0 <= Node.val <= 105知识点&算法二叉搜索树具有中序遍历有序的性质,所以二叉搜索树中节点的最小距离一定出现原创 2021-04-13 21:23:56 · 158 阅读 · 0 评论