原题链接:https://oj.leetcode.com/problems/binary-tree-inorder-traversal/
题目大意:中序遍历二叉树
解题思路:中序遍历二叉树,中序遍历二叉树的左子树,访问根结点,中序遍历二叉树的右子树。非递归实现时,用一个栈模拟遍历过程即可。因为需要先遍历左子树,所以每个结点先入栈,出栈时访问。
vector inorderTraversal(...
分类:
其他好文 时间:
2014-12-16 11:53:51
阅读次数:
172
原题链接:https://oj.leetcode.com/problems/binary-tree-postorder-traversal/
题目大意:后序遍历二叉树
解题思路:后序遍历二叉树的步骤:后序遍历二叉树的左子树,后序遍历二叉树的右子树,访问根结点。非递归实现时,用一个栈模拟遍历过程。由于访问完左子树后访问右子树,栈中元素要起到转向访问其右子树的作用,但是不能像先序和中序遍历那样出栈...
分类:
其他好文 时间:
2014-12-16 11:53:41
阅读次数:
183
1. 算法T(以中根序遍历二叉树)设$T$是指向二叉树的指针;本算法以中根序访问二叉树中的所有节点,并且利用一个辅助栈A。T1. [初始化] 置栈A为空,并置链接变量$P\gets T$。T2. [$P=\bigwedge$?] 如果$P=\bigwedge$,转到步骤T4。T3. [$栈\Left...
分类:
其他好文 时间:
2014-12-15 23:25:59
阅读次数:
293
二叉树的遍历方式基本就是前序遍历,中序遍历,后序遍历和层次遍历。从代码的角度来说,前三种最简单的就是用递归了,代码会非常简洁。但是递归有一个缺陷,就是当二叉树的节点非常多的时候,层次深的递归会不停的进行程序的压栈和出栈操作,效率比较低。这里就不写递归算法了,只写四种遍历的非递归算法。
先定义二叉树的节点如下:
/**
* Definition for binary tree
* pub...
分类:
编程语言 时间:
2014-12-15 13:47:08
阅读次数:
305
1、二叉树定义
typedef struct BTreeNodeElement_t_ {
void *data;
} BTreeNodeElement_t;
typedef struct BTreeNode_t_ {
BTreeNodeElement_t *m_pElemt;
struct BTreeNode_t_ *m_pLeft;
struct BTr...
分类:
其他好文 时间:
2014-12-15 10:28:29
阅读次数:
161
使用递归可以非常方便地实现二叉树的遍历。如果不使用递归呢,请听我一一道来。首先给出二叉树遍历的递归版本:struct BTNode { char data; BTNode *lchild, *rchild;};void visit(BTNode *p){ coutdatalch...
分类:
其他好文 时间:
2014-12-12 20:36:55
阅读次数:
206
package tree.binarytree;
import java.util.LinkedList;
/**
* 层序遍历二叉树
*
* @author wl
*
*/
public class PrintFromTopToBotton {
public static void printfromtoptobotton(BiTreeNode root) {
if (r...
分类:
编程语言 时间:
2014-12-06 08:56:54
阅读次数:
258
http://poj.org/problem?id=2255已知先序和中序遍历,求后序遍历二叉树。 小白书1,106页。 Tree RecoveryTime Limit:1000MSMemory Limit:65536KTotal Submissions:11774Accepted:7382Des....
分类:
其他好文 时间:
2014-12-04 21:31:40
阅读次数:
175
二叉树给出两种遍历序列(含中序遍历)创建一颗先序遍历二叉树...
分类:
其他好文 时间:
2014-12-04 17:55:15
阅读次数:
198
二叉树的遍历有三种方式: 1)先序遍历:若二叉树为空,则空操作;不为空,则先访问根结点,先序遍历左子树,先序遍历右子树。 2)后序遍历:若二叉树为空,则空操作;不为空,则中序遍历左子树,访问根结点,中序遍历右子树。 3)后序遍历:若二叉树为空,则空操作;不为空,则后序遍历左子树,后序遍历右...
分类:
其他好文 时间:
2014-12-04 11:36:36
阅读次数:
150