
树
文章平均质量分 54
Lynn_Baby
这个作者很懒,什么都没留下…
展开
-
剑指offer-序列化二叉树和反序列化二叉树-java
题目描述:请实现两个函数,分别用来序列化和反序列化二叉树思路解析:序列化二叉树,可以用前序遍历的方法,先根节点、然后左子树、后边右子树。注意要用StringBuffer,因为可以直接更改字符串;如果根节点为空,那么直接返回“#”结束。这个也是递归的结束标志代码:import java.lang.StringBuffer;import java.lang.String;/*public cla...原创 2018-04-16 15:52:32 · 222 阅读 · 0 评论 -
LeetCode—binary-tree-postorder-traversal(二叉树的后序遍历)—Java
题目描述:Given a binary tree, return the postorder traversal of its nodes' values.For example:Given binary tree{1,#,2,3}, 1 \ 2 / 3return[3,2,1].思路解析:后序遍历:helper方法:递归先左子树,递归后右子树,插入到链表中新...原创 2018-05-20 17:42:00 · 312 阅读 · 0 评论 -
剑指offer-二叉搜索树的第k个结点-java
题目描述:给定一颗二叉搜索树,请找出其中的第k大的结点。例如, 5 / \ 3 7 /\ /\ 2 4 6 8 中,按结点数值大小顺序第三个结点的值为4。思路解析:二叉树的中序遍历,从小到大输出结点用栈来存储结点,并且计数。循环条件:结点不为空,栈不为空结点不为空就入栈,否则就出栈,遍历到第k结点就要跳出循环代码:import java.util.Stack;/*public class Tr...原创 2018-04-26 17:31:04 · 194 阅读 · 0 评论 -
剑指offer-二叉搜索树与双向链表
题目描述:输入一棵二叉搜索树,将该二叉搜索树转换成一个排序的双向链表。要求不能创建任何新的结点,只能调整树中结点指针的指向。思路解析:用栈来做,把根节点的左子树,左子树的左子树,......全部放入栈中,然后弹出的肯定是最小值注意要把最左边的作为头节点,存起来list只要栈不为空,或者是root还有节点,就可以一直去连接访问过的节点存为pre,可以进行下一次的循环代码:import java.ut...原创 2018-04-24 10:57:45 · 151 阅读 · 0 评论 -
剑指offer-按之字形顺序打印二叉树-java
题目描述:请实现一个函数按照之字形打印二叉树,即第一行按照从左到右的顺序打印,第二层按照从右至左的顺序打印,第三行按照从左到右的顺序打印,其他行以此类推。思路解析:需要两个栈来辅助输出之字形的二叉树的结点值。单数栈是单数行的输出,在出栈的过程中,需要把出栈结点的左右子树放入双数栈中,先左后右,这样输出就是从后向前了双数栈是双数行的输出,在出栈的过程中,需要把出栈结点的左右子树放入单数栈中,先右后左...原创 2018-04-13 16:28:22 · 742 阅读 · 2 评论 -
剑指offer-判断二叉树是否是对称的-java
题目描述:请实现一个函数,用来判断一颗二叉树是不是对称的。注意,如果一个二叉树同此二叉树的镜像是同样的,定义其为对称的。思路解析:判断是不是空结点,是的话直接是对称的判断两边的左右子树是不是对称的,左右子树为空,返回true;有一个为空则是false还要判断两个结点是不是相等的,然后左子树的左子树和右子树的右子树相等,中间的两个相等。代码:public class TreeNode { ...原创 2018-04-13 14:02:01 · 394 阅读 · 1 评论 -
剑指offer-二叉树的下一个结点-java
题目描述:给定一个二叉树和其中的一个结点,请找出中序遍历顺序的下一个结点并且返回。注意,树中的结点不仅包含左右子结点,同时包含指向父结点的指针。思路解析:代码:public class Solution { public TreeLinkNode GetNext(TreeLinkNode pNode) { TreeLinkNode node = null; ...原创 2018-04-13 13:24:33 · 219 阅读 · 0 评论 -
剑指offer-平衡二叉树-java
题目描述:输入一棵二叉树,判断该二叉树是否是平衡二叉树。思路解析:平衡二叉树:左右子树的深度不超过1此题需要定义定义一个类,这样depth才不会因为作用域和作用范围的问题传不过去啊。左右子树的差都要小于1。代码:public class Solution { class Deepth{ int val=0; } public boolean IsBalanc...原创 2018-04-13 11:18:27 · 267 阅读 · 0 评论 -
剑指offer-二叉树的深度-java
题目描述:输入一棵二叉树,求该树的深度。从根结点到叶结点依次经过的结点(含根、叶结点)形成树的一条路径,最长路径的长度为树的深度。思路解析:如果一棵树只有一个结点,它的深度为1。如果根结点只有左子树而没有右子树,那么树的深度应该是其左子树的深度加1;同样如果根结点只有右子树而没有左子树,那么树的深度应该是其右子树的深度加1。如果既有右子树又有左子树,那该树的深度就是其左、右子树深度的较大值再加1。...转载 2018-04-13 10:07:30 · 180 阅读 · 0 评论 -
剑指offer-把二叉树打印成多行-java
题目描述:从上到下按层打印二叉树,同一层结点从左至右输出。每一层输出一行。思路解析:使用队列,层序遍历数组,同样采用一个元素出队后,就把他的左右孩子加进来,不同的是需要计数每一层的元素个数代码:import java.util.ArrayList;import java.util.Queue;import java.util.LinkedList;/*public class TreeNo...原创 2018-04-12 17:33:09 · 292 阅读 · 1 评论 -
剑指offer-二叉树中和为某一值的路径-java
题目描述:输入一颗二叉树和一个整数,打印出二叉树中结点值的和为输入整数的所有路径。路径定义为从树的根结点开始往下一直到叶结点所经过的结点形成一条路径。思路解析:首先把根节点放入list中,然后target更新为去掉根节点值后的数字判断是否是叶子节点,如果是叶子节点,并且target更新为0,此时符合要求,加入到listAll中如果不是叶子节点,那就继续访问子节点。访问结束需要将list中最后一个删...原创 2018-04-12 16:26:46 · 199 阅读 · 0 评论 -
剑指offer-二叉搜索树的后序遍历序列-java
题目描述:输入一个整数数组,判断该数组是不是某二叉搜索树的后序遍历的结果。如果是则输出Yes,否则输出No。假设输入的数组的任意两个数字都互不相同。思路解析:二叉搜索树又称二叉排序树,根节点比左子树任意节点值大,比右子树的任意节点值小。而后序遍历的最后一个是根节点。于是:将数组的从前到后的数据跟最后一个值比较,找到比根节点大的数组下标,这也是右子树的开始位置然后判断右子树是不是都比根节点大,否则返...原创 2018-04-12 14:11:45 · 563 阅读 · 1 评论 -
剑指offer-从上到下打印二叉树-java
题目描述:从上往下打印出二叉树的每个节点,同层节点从左至右打印。思路解析:二叉树的层序遍历,需要队列的辅助,因为是先进先出;出来一个就把他的左子节点和右子节点加入队列;可以使用poll();注意:需要将二叉树的value添加进队列中。代码:import java.util.ArrayList;import java.util.Queue;import java.util.LinkedList;...原创 2018-04-12 11:39:22 · 212 阅读 · 0 评论 -
剑指offer-二叉树的镜像-java
题目描述:操作给定的二叉树,将其变换为源二叉树的镜像。二叉树的镜像定义:源二叉树 8 / \ 6 10 / \ / \ 5 7 9 11 镜像二叉树 8 / \ 10 6 / \ / \ 11 9 7 5思路解析:交换根节点的左...原创 2018-04-12 11:03:05 · 195 阅读 · 0 评论 -
剑指offer-树的子结构-java
题目描述:输入两棵二叉树A,B,判断B是不是A的子结构。(ps:我们约定空树不是任意一个树的子结构)思路解析:找到相等的节点:比较A和B的根节点是否相等,若相等,就查看是不是子树;不相等的话,就接着比较左孩子和右孩子是不是跟子结构的root相等(递归)是不是子树的递归:结束条件是root2为空了,比较完毕,则为子树;root1比较完毕,不是子树;后边的值不相等,不是子树;相等的话就接着比较各自的左...原创 2018-04-12 10:36:47 · 236 阅读 · 0 评论 -
剑指offer-重建二叉树-java
题目描述:输入某二叉树的前序遍历和中序遍历的结果,请重建出该二叉树。假设输入的前序遍历和中序遍历的结果中都不含重复的数字。例如输入前序遍历序列{1,2,4,7,3,5,6,8}和中序遍历序列{4,7,2,1,5,3,8,6},则重建二叉树并返回。思路解析:前序遍历的序列第一个是根节点,所以从中序遍历中找到这个根节点,中序遍历中根节点的位置可以分离做右子树左子树:i-startIn的距离是左子树的长...原创 2018-04-12 09:30:39 · 193 阅读 · 0 评论 -
前序遍历-后序遍历(递归与非递归实现)——java
前序遍历:顺序为根左右转载自:https://blog.youkuaiyun.com/xuebaobao130526/article/details/80082338递归实现:当节点不为空时,每次遍历现将节点值添加进list,之后,左子树补空,遍历左子树;右指数不空,遍历右子树;最终返回list。需要注意的是根节点为空的情况,在遍历之前,根节点为空,直接返回(全局)list。public c...转载 2018-08-24 17:26:19 · 2673 阅读 · 2 评论