前序遍历-后序遍历(递归与非递归实现)——java

前序遍历:顺序为根左右 转载自:https://blog.csdn.net/xuebaobao130526/article/details/80082338 递归实现: 当节点不为空时,每次遍历现将节点值添加进list,之后,左子树补空,遍历左子树;右指数不空,遍历右子树;最终返回list。...

2018-08-24 17:26:19

阅读数 613

评论数 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 / 3 ret...

2018-05-20 17:42:00

阅读数 70

评论数 0

剑指offer-二叉搜索树的第k个结点-java

题目描述:给定一颗二叉搜索树,请找出其中的第k大的结点。例如, 5 / \ 3 7 /\ /\ 2 4 6 8 中,按结点数值大小顺序第三个结点的值为4。思路解析:二叉树的中序遍历,从小到大输出结点用栈来存储结点,并且计数。循环条件:结点不为空,栈不为空结点不为空就入栈,否则就出栈,遍历到第k结点...

2018-04-26 17:31:04

阅读数 47

评论数 0

剑指offer-二叉搜索树与双向链表

题目描述:输入一棵二叉搜索树,将该二叉搜索树转换成一个排序的双向链表。要求不能创建任何新的结点,只能调整树中结点指针的指向。思路解析:用栈来做,把根节点的左子树,左子树的左子树,......全部放入栈中,然后弹出的肯定是最小值注意要把最左边的作为头节点,存起来list只要栈不为空,或者是root还...

2018-04-24 10:57:45

阅读数 26

评论数 0

剑指offer-序列化二叉树和反序列化二叉树-java

题目描述:请实现两个函数,分别用来序列化和反序列化二叉树思路解析:序列化二叉树,可以用前序遍历的方法,先根节点、然后左子树、后边右子树。注意要用StringBuffer,因为可以直接更改字符串;如果根节点为空,那么直接返回“#”结束。这个也是递归的结束标志代码:import java.lang.S...

2018-04-16 15:52:32

阅读数 59

评论数 0

剑指offer-按之字形顺序打印二叉树-java

题目描述:请实现一个函数按照之字形打印二叉树,即第一行按照从左到右的顺序打印,第二层按照从右至左的顺序打印,第三行按照从左到右的顺序打印,其他行以此类推。思路解析:需要两个栈来辅助输出之字形的二叉树的结点值。单数栈是单数行的输出,在出栈的过程中,需要把出栈结点的左右子树放入双数栈中,先左后右,这样...

2018-04-13 16:28:22

阅读数 183

评论数 0

剑指offer-判断二叉树是否是对称的-java

题目描述:请实现一个函数,用来判断一颗二叉树是不是对称的。注意,如果一个二叉树同此二叉树的镜像是同样的,定义其为对称的。思路解析:判断是不是空结点,是的话直接是对称的判断两边的左右子树是不是对称的,左右子树为空,返回true;有一个为空则是false还要判断两个结点是不是相等的,然后左子树的左子树...

2018-04-13 14:02:01

阅读数 89

评论数 0

剑指offer-二叉树的下一个结点-java

题目描述:给定一个二叉树和其中的一个结点,请找出中序遍历顺序的下一个结点并且返回。注意,树中的结点不仅包含左右子结点,同时包含指向父结点的指针。思路解析:代码:public class Solution { public TreeLinkNode GetNext(TreeLinkNode ...

2018-04-13 13:24:33

阅读数 50

评论数 0

剑指offer-平衡二叉树-java

题目描述:输入一棵二叉树,判断该二叉树是否是平衡二叉树。思路解析:平衡二叉树:左右子树的深度不超过1此题需要定义定义一个类,这样depth才不会因为作用域和作用范围的问题传不过去啊。左右子树的差都要小于1。代码:public class Solution { class Deepth{ ...

2018-04-13 11:18:27

阅读数 57

评论数 0

剑指offer-二叉树的深度-java

题目描述:输入一棵二叉树,求该树的深度。从根结点到叶结点依次经过的结点(含根、叶结点)形成树的一条路径,最长路径的长度为树的深度。思路解析:如果一棵树只有一个结点,它的深度为1。如果根结点只有左子树而没有右子树,那么树的深度应该是其左子树的深度加1;同样如果根结点只有右子树而没有左子树,那么树的深...

2018-04-13 10:07:30

阅读数 45

评论数 0

剑指offer-把二叉树打印成多行-java

题目描述:从上到下按层打印二叉树,同一层结点从左至右输出。每一层输出一行。思路解析:使用队列,层序遍历数组,同样采用一个元素出队后,就把他的左右孩子加进来,不同的是需要计数每一层的元素个数代码:import java.util.ArrayList; import java.util.Queue; ...

2018-04-12 17:33:09

阅读数 52

评论数 0

剑指offer-二叉树中和为某一值的路径-java

题目描述:输入一颗二叉树和一个整数,打印出二叉树中结点值的和为输入整数的所有路径。路径定义为从树的根结点开始往下一直到叶结点所经过的结点形成一条路径。思路解析:首先把根节点放入list中,然后target更新为去掉根节点值后的数字判断是否是叶子节点,如果是叶子节点,并且target更新为0,此时符...

2018-04-12 16:26:46

阅读数 33

评论数 0

剑指offer-二叉搜索树的后序遍历序列-java

题目描述:输入一个整数数组,判断该数组是不是某二叉搜索树的后序遍历的结果。如果是则输出Yes,否则输出No。假设输入的数组的任意两个数字都互不相同。思路解析:二叉搜索树又称二叉排序树,根节点比左子树任意节点值大,比右子树的任意节点值小。而后序遍历的最后一个是根节点。于是:将数组的从前到后的数据跟最...

2018-04-12 14:11:45

阅读数 56

评论数 0

剑指offer-从上到下打印二叉树-java

题目描述:从上往下打印出二叉树的每个节点,同层节点从左至右打印。思路解析:二叉树的层序遍历,需要队列的辅助,因为是先进先出;出来一个就把他的左子节点和右子节点加入队列;可以使用poll();注意:需要将二叉树的value添加进队列中。代码:import java.util.ArrayList; i...

2018-04-12 11:39:22

阅读数 46

评论数 0

剑指offer-二叉树的镜像-java

题目描述:操作给定的二叉树,将其变换为源二叉树的镜像。二叉树的镜像定义:源二叉树 8 / \ 6 10 / \ / \ 5 7 9 11 镜像二叉树 8 / \ ...

2018-04-12 11:03:05

阅读数 44

评论数 0

剑指offer-树的子结构-java

题目描述:输入两棵二叉树A,B,判断B是不是A的子结构。(ps:我们约定空树不是任意一个树的子结构)思路解析:找到相等的节点:比较A和B的根节点是否相等,若相等,就查看是不是子树;不相等的话,就接着比较左孩子和右孩子是不是跟子结构的root相等(递归)是不是子树的递归:结束条件是root2为空了,...

2018-04-12 10:36:47

阅读数 55

评论数 0

剑指offer-重建二叉树-java

题目描述:输入某二叉树的前序遍历和中序遍历的结果,请重建出该二叉树。假设输入的前序遍历和中序遍历的结果中都不含重复的数字。例如输入前序遍历序列{1,2,4,7,3,5,6,8}和中序遍历序列{4,7,2,1,5,3,8,6},则重建二叉树并返回。思路解析:前序遍历的序列第一个是根节点,所以从中序遍...

2018-04-12 09:30:39

阅读数 54

评论数 0

提示
确定要删除当前文章?
取消 删除
关闭
关闭