一、题目 1、审题 2、分析 一棵二叉树,从右边看他,看到的每一层的第一个元素存起来。 二、解答 1、思路: 方法一、 采用 Queue 进行层次遍历,且每次获取一层的最右边一个元素。 方法二、 采用递归获取每一层最右边元素; 即修改后的前序遍历,遍历顺序为: 根 --> 右 --> 左 ; 巧妙的 ...
分类:
其他好文 时间:
2018-10-18 22:08:08
阅读次数:
176
一、前序遍历: 递归方式: 非递归方式:时间复杂度O(n),空间复杂度O(n) 二、中序遍历: 递归方式: 非递归方式: 三、后序遍历: 递归 非递归: ...
分类:
其他好文 时间:
2018-10-18 13:12:35
阅读次数:
147
本文参考自《剑指offer》一书,代码采用Java语言。 更多:《剑指Offer》Java实现合集 题目 请完成一个函数,输入一个二叉树,该函数输出它的镜像。 思路 画图可以很清晰地得到思路:先前序遍历,对每个结点交换左右子结点。 测试算例 1.功能测试(普通二叉树;左斜树;右斜树;一个结点) 2. ...
分类:
编程语言 时间:
2018-10-16 17:34:33
阅读次数:
130
二叉树的遍历: 前序遍历(递归): LeetCode 144 非递归: 中序遍历(递归):LeetCode 94 非递归: 后序遍历(递归): LeetCode 145 非递归:(大致解析:如果该结点的左右子树都为空或者左右子树中的一个为上一次访问的结点即该结点的右结点已经访问过了,则输出。否则将该 ...
分类:
编程语言 时间:
2018-10-15 00:41:32
阅读次数:
190
在最近的面试中,面试官经常要面试者手撕代码,哎奈何本人只知道原理,一到手撕就死乔乔了。 第一题:宜信一面手撕代码之写代码实现一个栈的的前序遍历: 第一步、要构造节点类 第二步、使用遍历的方法写写前序遍历 第二题:宜信一面手撕代码之写代码实现一个栈: ...
分类:
编程语言 时间:
2018-10-14 22:02:50
阅读次数:
1229
一、前序遍历 分析: 1、前序遍历是中左右,因此利用栈,记录栈顶根结点的同时,先压右子树,后压左子树,从而先遍历左子树。 2、每次弹出的栈顶结点符合前序遍历的顺序,因此可直接记录。 3、注意:由于压入栈的是树的结点,所以栈内数据类型为Node*。 二、中序遍历 分析: 1、中序遍历是左中右,对于一棵 ...
分类:
其他好文 时间:
2018-10-13 00:04:18
阅读次数:
149
题目描述 输入某二叉树的前序遍历和中序遍历的结果,请重建出该二叉树。假设输入的前序遍历和中序遍历的结果中都不含重复的数字。例如输入前序遍历序列{1,2,4,7,3,5,6,8}和中序遍历序列{4,7,2,1,5,3,8,6},则重建二叉树并返回。 前序:{1,2,4,7,3,5,6,8},前序的第一 ...
分类:
其他好文 时间:
2018-10-12 14:00:29
阅读次数:
168
144_二叉树的前序遍历 [TOC] 描述 给定一个二叉树,返回它的 前序 遍历。 示例: 进阶: 递归算法很简单,你可以通过迭代算法完成吗? 方法一:递归 Java 代码 复杂度分析: 时间复杂度:$O(n)$,其中,$n?$ 为二叉树节点的数目 空间复杂度:$O(n)$ 方法二:非递归(使用栈) ...
分类:
其他好文 时间:
2018-10-12 01:27:55
阅读次数:
176
前序遍历非递归依靠栈实现,相对来说比较简单,先来用手写模拟一下基本就能知道怎么写了 据此可得如下代码 用到的函数就不全贴出来了,思路上上面应该说的比较清楚了 ...
分类:
其他好文 时间:
2018-10-11 12:56:19
阅读次数:
166
给定一个N叉树,返回其节点值的前序遍历。 例如,给定一个 3叉树 : 返回其前序遍历: [1,3,5,6,2,4]。 说明: 递归法很简单,你可以使用迭代法完成此题吗? 1 /* 2 // Definition for a Node. 3 class Node { 4 public: 5 int v ...
分类:
其他好文 时间:
2018-10-10 21:47:06
阅读次数:
166