![](https://img-blog.csdnimg.cn/20201014180756923.png?x-oss-process=image/resize,m_fixed,h_64,w_64)
二叉树
wuxiaosi808
这个作者很懒,什么都没留下…
展开
-
剑指offer:树的子结构
题目:输入两棵二叉树A,B,判断B是不是A的子结构。(ps:我们约定空树不是任意一个树的子结构)思路:第一步先在树A中找到熟B的根节点的值一样的节点R,第二步在判断树A中以R为根结点的子树是不是包含B树一样的结构。代码如下:/*思路:参考剑指offer1、首先设置标志位result = false,因为一旦匹配成功result就设为true,剩下的代码不会执行,如果匹配原创 2017-08-08 21:50:49 · 209 阅读 · 0 评论 -
剑指offer:从上往下打印二叉树
题目:从上往下打印出二叉树的每个节点,同层节点从左至右打印。 思路: 每一次打印一个结点的时候,如果该结点有子结点,则把子结点放进队列的末尾。接下来把最早进入队列的头部取出,重复前面的步骤,直至队列里的所有结点都打印完毕。 代码如下: public class Solution { public ArrayList PrintFromTopToBottom(TreeNode roo原创 2017-08-02 09:59:45 · 294 阅读 · 0 评论 -
剑指offer:二叉树中和为某一值的路径
题目:输入一颗二叉树和一个整数,打印出二叉树中结点值的和为输入整数的所有路径。路径定义为从树的根结点开始往下一直到叶结点所经过的结点形成一条路径。思路:因为是从根结点到叶结点的路径值和,所以要选择前序遍历。当用前序遍历的方式访问某一结点时,把该结点添加到路径上,并累加该结点的值。如果该结点是叶结点并且路径中结点值是输入的整数值,当前路径就符合要求,打印出来。如果当前结点是非叶结点,则继原创 2017-08-09 09:53:48 · 194 阅读 · 0 评论 -
剑指offer:二叉搜索树的后序遍历序列
题目:输入一个整数数组,判断该数组是不是某二叉搜索树的后序遍历的结果。如果是则输出Yes,否则输出No。假设输入的数组的任意两个数字都互不相同。 思路: 在后序遍历得到的序列中,最后一个数字是根节点的值。数组前面的数字可以分为两部分:第一部分是左子树结点的值,都小于根的值;第二部分是右子树结点的值都大于根节点。 代码如下; public class Solution { publi原创 2017-08-02 11:25:55 · 202 阅读 · 0 评论 -
剑指offer:二叉树的深度
题目:输入一棵二叉树,求该树的深度。从根结点到叶结点依次经过的结点(含根、叶结点)形成树的一条路径,最长路径的长度为树的深度。思路:如果一棵树只有一个结点,则深度是1。如果根结点只有左子树而没有右子树,则深度是左子树的深度+1;如果根结点只有右子树没有左子树,则深度应该是右子树的深度+1;如果根结点既有左子树又有右子树,则深度是左子树和右子树深度较大者+1.代码如下:pub原创 2017-08-09 10:21:55 · 233 阅读 · 0 评论 -
剑指offer:二叉树的下一个结点
题目:给定一个二叉树和其中的一个结点,请找出中序遍历顺序的下一个结点并且返回。注意,树中的结点不仅包含左右子结点,同时包含指向父结点的指针。思路:中序遍历是左根右的遍历方式,如果一个结点有右子树,则它的下一个结点是右子树中的最左子结点。也就是从右子结点出发一直沿着指向左子结点的指针,就能找到它的下一个结点。如果没有右子树,如果结点是它的父结点的左子结点那么它的下一个结点是它的父结点。如原创 2017-08-09 10:43:51 · 205 阅读 · 0 评论 -
二叉树先序遍历,中序遍历,后序遍历递归非递归方法
二叉树的遍历问题是常问问题之一。今天就总结下二叉树三种遍历的做法。首先看看遍历的分类:前序遍历,中序遍历,后序遍历。还有一种是层次遍历,中遍历是从图的广度优先遍历方法启发得来的。前序遍历前序遍历:访问根结点;按前序遍历方式遍历左子树;按前序遍历方式遍历右子树。根-左-右方式递归方法是:void PreOrder(BinaryTreeNode root){if(roor!=n原创 2017-08-26 16:26:16 · 443 阅读 · 0 评论