
树
hutongling
知行合一!
展开
-
二叉排序树
二叉排序树的实现 代码如下:package problem1;/** * @author Hutongling 二叉树排序--将一个整型数组中的元素存进二叉排序树中再查找元素; */ class Node { int data; Node left; Node right; public Node() { } public Node(int valu原创 2017-03-18 20:17:37 · 328 阅读 · 0 评论 -
判断一棵树是否是另一棵树的子树
题目:判断一棵树是否是另一棵树的子树(两棵树均是有序的,即树的左右子树的顺序是固定的)分析:假设这两棵树中的第一棵为母树,另一棵为子树。首先在母树中搜索子树的根节点,找到根节点之后就按照该根节点向下搜索比较,如果比较结果为true即子树是母树的一棵子树,否则的话继续向下搜索子树根节点在母树中的位置,如此递归下去最终即可得到结果。按照下面的例子 代码如下:package problem2; /*原创 2017-03-19 13:59:15 · 1434 阅读 · 0 评论 -
树的镜像
题目:给定一棵树,反转这棵树得到树的镜像 例如: 分析:通过画图可知,得到一棵树的镜像只需要将该树的左右子树调换位置即可代码如下:package problem2;/** * @author Hutongling */ public class 二叉树的镜像 { static void binTreeMiorr(TreeNode root){ if(root==nul原创 2017-03-19 16:47:40 · 538 阅读 · 0 评论 -
从上往下打印二叉树
题目:从上往下打印二叉树。 分析:这个问题其实就是一个层序遍历二叉树的问题,先遍历根节点,然后输出根节点并且将根节点的子树压入队列中,队列每次出队一个节点,然后对应在该队的末尾加入该加点的子树。下面的例子: 从上往下打印二叉树代码如下:package problem2;import java.util.LinkedList; /** * @author Hutongling * * @原创 2017-03-20 20:56:09 · 333 阅读 · 0 评论 -
判断二叉树的后序遍历序列是否合法
题目:输入一个整数数组,判断该数组是不是某个二叉搜索树的后序遍历的结果。如果是则返回true,否则返回false.假设输入的数组任意两个数字都不相同。分析: 二叉树的后序遍历的结果中,最后一个是根节点,从头开始比较数组与根节点,如果大于根节点则停止,停止位置之前就是左子树,之后到倒数第二个节点就是右子树,然后使用递归分别对左子树和右子树进行操作。具体代码如下:package problem2; i原创 2017-03-21 16:12:53 · 1205 阅读 · 0 评论 -
二叉树中和为某一值的路径
题目:对于一个给定的二叉树,再给定一个数值,在该二叉树中找出和为该数值的路径(所有路径)。代码如下:package problem2;import java.util.Iterator; import java.util.LinkedList;/** * @author Hutongling * * @time:2017年3月21日 下午4:14:50 */ public class 二叉树原创 2017-03-21 17:23:21 · 210 阅读 · 0 评论 -
二叉树的深度
题目:输入一颗二叉树的根节点,求该树的深度。从根节点到叶节点依次经过的节点形成树的一条路径,最长路径的长度为树的深度。分析:从另一个角度理解树的深度。如果一棵树只有一个节点的话,它的深度为1.如果根节点只有左子树而没有右子树,则树的深度为左子树的深度加1,人同样如果根节点只有右子树而没有左子树,那么树的深度为右子树的深度加1.如果既有左子树又有右子树,那么该树的深度为左右子树深度的较大值加1.代码如原创 2017-03-29 17:10:43 · 2187 阅读 · 0 评论 -
二叉搜索树与双向链表
题目:输入一棵二叉搜索树(即二叉排序树),将该二叉搜索树转换成一个排序的双向链表。要求不能创建任何新的节点,只能调整书中节点指针的指向。 分析: 对于下图这样一棵二叉排序树来讲,转换成右边的排序的双向链表,我们考虑到二叉排序树的中序遍历是一种有序的结果,所以我们使用中序遍历,然后在遍历的过程中修改子树的节点指针指向,以达到目的。 因为当中序遍历这棵二叉树的时候,节点8的下一个节点是10,节原创 2017-03-22 20:20:40 · 459 阅读 · 0 评论 -
判断一棵二叉树是不是平衡二叉树
题目:输入一棵二叉排序树的根节点,判断该树是不是平衡二叉树。分析:根据平衡二叉树的定义,我们只要计算左右子树的深度,然后通过这两个深度之差去判断是否是平衡二叉树。代码如下:/** * 给定一棵二叉树,判断该二叉树是不是平衡二叉树 */ package problem2; /** * @author Hutongling * * @time:2017年3月29日 下午5:21:26 */原创 2017-03-29 20:58:55 · 733 阅读 · 0 评论