树
dongqinging
这个作者很懒,什么都没留下…
展开
-
重建二叉树
题目: 输入某二叉树的前序遍历和中序遍历的结果,请重建出该二叉树。假设输入的前序遍历和中序遍历的结果中都不含重复的数字。例如输入前序遍历序列 [ 1, 2, 4, 7, 3, 5, 6,8 ] , 中序遍历序列 [4, 7, 2, 1 , 5, 3, 8, 6 ]。 重建二叉树并输入它的头结点。原创 2016-03-03 20:15:52 · 340 阅读 · 0 评论 -
树的子结构
题目:输入两棵二叉树A 和B,判断B是不是A的子结构。(B树是否在A树中) 思路:第一步在树A中找到和B的根结点的值一样的结点R, 第二步再判断树A中以R为根结点的子树是不是包含和树B一样的结构。 package offer; public class SubTree { public static void main(String[] args) { BinaryTreeNode n原创 2016-03-06 18:23:56 · 305 阅读 · 0 评论 -
二叉树的镜像
题目:请完成一个函数,输入一个二叉树,该函数输出它的镜像。 通过画图,可知二叉树的镜像如下图所示: Java代码: package offer; import java.util.LinkedList; import java.util.Queue; public class MirrorRecursively { /* * 求二叉树的镜像 * 先前序遍历这棵树原创 2016-03-07 21:24:04 · 255 阅读 · 0 评论 -
从上往下打印二叉树
题目:从上往下打印出二叉树的每个结点,同一层的结点按照从左按照从左到右的顺序打印。 思路:使用队列。广度优先遍历二叉树。不管是广度优先遍历一个有向图还是一棵树,都要用到队列。第一步我们把起始节点(对树而言是根结点)放入队列中。接下来每一次从队列的头部取出一个结点,遍历这个结点之后把它能到达的结点(对树而言是子节点)都依次放入对列。重复这个遍历过程,直到队列中的结点全部被遍历为止。 packag原创 2016-03-08 13:20:01 · 350 阅读 · 0 评论 -
二叉搜索树的后序遍历序列Java
题目:输入一个整数数组,判断该数组是不是某二叉搜索树的后序遍历的结果。如果是则返回true, 否则返回false。假设输入的数组的任意两个数字都互不相同。 思路:在后序遍历得到的序列中,最后一个数字是树的根结点的值。数组中前面的数字可以分为两部分:第一部分是左子树根结点的值,它们都比 根结点的值小;第二部分是右子树根结点的值,它们都比根结点的值大。 package offer; public原创 2016-03-08 16:10:11 · 1605 阅读 · 0 评论 -
二叉树中和为某一值得路径java
题目:输入一个二叉树和一个整数,打印出二叉树中结点值得和为输入整数的所有路径。从树的根结点开始往下一直到叶结点所经过的 结点形成一条路径。 例如输入整数22和如下二元树 10 / / 5 12 / / 4 7 则打印出两条路径:10, 12和10, 5, 7。 由于路径是从根结点出发到叶结点,也就是说路径总是以根原创 2016-03-02 22:58:42 · 329 阅读 · 0 评论 -
二叉搜索树与双向链表Java
题目:输入一棵二叉搜索树,将该二叉搜索树转换成一个排序的双向链表。要求不能创建任何新的结点,只能调整树中结点指针的方向。 思路:在二叉搜索树中,左子结点的值总是小于父子结点的值,右子结点的值总是大于父结点的值。因此在转换成排序的双向链表时,原先指向左子节点的值调整为 链表中指向前一个结点的指针,原先指向右子结点的指针调整为链表中指向后一个结点的指针。 根结点,左子树和右子树。在把左,右原创 2016-03-08 18:51:12 · 1175 阅读 · 0 评论 -
二叉树的深度
题目:输入一棵二叉树的根结点,求该树的深度。从根结点到叶结点依次经过的结点(含根,叶结点)形成树的一条路径,最长路径的长度为树的深度。 思路:如果一棵树只有一个结点,它的深度为1。如果根结点只有左子树而没有右子树,那么树的深度应该是其左子树的深度加1;同样如果根结点只有右子树而没有左子树,那么树的深度应该是其右子树的深度加1.如果既有左子树又有右子树,那该树的深度就是其左右子树深度的较大值加1.原创 2016-03-12 20:50:51 · 362 阅读 · 0 评论 -
判断是否是平衡二叉树
题目:输入一棵二叉树的根结点,判断该树是不是平衡二叉树。如果某二叉树中任意结点的左右子树的深度相差不超过1,那么它就是一棵平衡二叉树。 package offer; /** * 判断是否是平衡二叉树 * */ public class IsBalanced { public static void main(String[] args){ int[] pre = {1,2,4,5原创 2016-03-13 15:54:16 · 436 阅读 · 0 评论