文章分类 - 算法-树
摘要:二叉树遍历 题目描述 编一个程序,读入用户输入的一串先序遍历字符串,根据此字符串建立一个二叉树(以指针方式存储)。 例如如下的先序遍历字符串: ABC DE G F 其中“ ”表示的是空格,空格字符代表空树。建立起此二叉树以后,再对二叉树进行中序遍历,输出遍历结果。 输入描述: 输出描述: 示例1
阅读全文
摘要:寻宝 题目描述 亮亮解出了卷轴隐藏的秘密,来到了一片沼泽地。这里有很多空地,而面试直通卡可能埋在任意一块空地中,好在亮亮发现了一堆木材,他可以将木材铺在两个空地之间的沼泽地上。因为亮亮不知道面试直通卡具体在哪一块空地中,所以必须要保证任意一块空地对于亮亮来说是可以抵达的。 “怎么还有鳄鱼!没办法,看
阅读全文
摘要:二叉搜索树的第k个结点 给定一棵二叉搜索树,请找出其中的第k小的结点。例如, (5,3,7,2,4,6,8) 中,按结点数值大小顺序第三小结点的值为4。 采用中序遍历,定义一个全局的kNow判断当前是第几小
阅读全文
摘要:序列化二叉树 请实现两个函数,分别用来序列化和反序列化二叉树 二叉树的序列化是指:把一棵二叉树按照某种遍历方式的结果以某种格式保存为字符串,从而使得内存中建立起来的二叉树可以持久保存。序列化可以基于先序、中序、后序、层序的二叉树遍历方式来进行修改,序列化的结果是一个字符串,序列化时通过 某种符号表示
阅读全文
摘要:按之字形顺序打印二叉树 请实现一个函数按照之字形打印二叉树,即第一行按照从左到右的顺序打印,第二层按照从右至左的顺序打印,第三行按照从左到右的顺序打印,其他行以此类推。 就是借助于平常的二叉树层序遍历,但是是一次将一层的都取出来放到ArrayList中,偶数就使用Collections.revers
阅读全文
摘要:# 对称的二叉树 请实现一个函数,用来判断一颗二叉树是不是对称的。注意,如果一个二叉树同此二叉树的镜像是同样的,定义其为对称的。 按题意先画一棵“大”一点的对称二叉树,然后按树的一层一层比较一下,看看怎么算是满足对称的二叉树,思路就有了。 ```java public class Solution
阅读全文
摘要:二叉树的下一个结点 给定一个二叉树和其中的一个结点,请找出中序遍历顺序的下一个结点并且返回。注意,树中的结点不仅包含左右子结点,同时包含指向父结点的指针。 根据中序遍历的规则,当结点存在右子树的时候,中序遍历的下一个结点为右子树的最左节点。但是当节点不存在右子树的时候,中序遍历的下一个结点必定为该节
阅读全文
摘要:判断是否是平衡二叉树 输入一棵二叉树,判断该二叉树是否是平衡二叉树。 本题适合直接使用 "计算二叉树深度的递归代码" 进行修改:
阅读全文
摘要:二叉树的深度 输入一棵二叉树,求该树的深度。从根结点到叶结点依次经过的结点(含根、叶结点)形成树的一条路径,最长路径的长度为树的深度。 这也是一道很经典的题,求二叉树的深度是一项基本技能。 一开始是想改造先序遍历,每次传递当前深度进去,然后在叶子节点的时候比较当前深度和一个全局的最大深度,但是看到了
阅读全文
摘要:二叉搜索树与双向链表 输入一棵二叉搜索树,将该二叉搜索树转换成一个排序的双向链表。要求不能创建任何新的结点,只能调整树中结点指针的指向。 设置两个节点,一个是开头,一个是处理的当前,然后递归地中序遍历,遍历中的处理就是处理当前节点和处理的当前的关系。最后输出开头节点
阅读全文
摘要:二叉树中和为某一值的路径 输入一颗二叉树的根节点和一个整数,打印出二叉树中结点值的和为输入整数的所有路径。路径定义为从树的根结点开始往下一直到叶结点所经过的结点形成一条路径。(注意: 在返回值的 list 中,数组长度大的数组靠前) 要点: 1. 对容器进行排序的方法:https://www.cnb
阅读全文
摘要:二叉搜索树的后序遍历序列 输入一个整数数组,判断该数组是不是某二叉搜索树的后序遍历的结果。如果是则输出Yes,否则输出No。假设输入的数组的任意两个数字都互不相同。 这道题的步骤很简单,就是递归验证序列是否符合二叉搜索树的后序遍历要求。验证的步骤就是: 1. 已知最后一个是父节点,前面的左子树,随后
阅读全文
摘要:二叉树的层序遍历 从上往下打印出二叉树的每个节点,同层节点从左至右打印。 这个数据结构中学过,用的是队列存放节点。关键是Java中的队列: Queue在java.util.Queue包下,但只是一个抽象类,有一个实现类是linkedList,所以我们应该写 Queue的放入方法叫offer(),取出
阅读全文
摘要:二叉树的镜像 操作给定的二叉树,将其变换为源二叉树的镜像。 思路很简单,不多说了,就是递归。二叉树问题真的很时候用递归 /** public class TreeNode { int val = 0; TreeNode left = null; TreeNode right = null; publ
阅读全文
摘要:树的子结构 输入两棵二叉树A,B,判断B是不是A的子结构。(ps:我们约定空树不是任意一个树的子结构) 这里要说一下这里的"子结构"和“子树”有什么区别。简单来说就是,子结构可以说子树或者子树的一部分,它也要求和原树的对应是连续的,但是可以不到叶子层 思路:用递归来实现,从 A 树的根节点开始,判断
阅读全文

浙公网安备 33010602011771号