二叉树的后序遍历用标记右子树vector的方法vector postorderTraversal(TreeNode *root) { vector ans; vector stack; vector isRight; stack.push_b...
分类:
其他好文 时间:
2014-11-23 15:39:43
阅读次数:
160
树的遍历
这三种遍历方法其实都很简单的,举例来说:
a
/ b c
这个是例子下面讲下这三个是如何遍历的。
struct TreeNode;
typedef TreeNode* Node;
typedef int EleType;
struct TreeNode{
Node lchild;
Node rchild;
EleT...
分类:
编程语言 时间:
2014-11-23 01:57:25
阅读次数:
246
题目描述 已知一个按先序序列输入的字符序列,如abc,,de,g,,f,,,(其中逗号表示空节点)。请建立二叉树并按中序和后序方式遍历二叉树,最后求出叶子节点个数和二叉树深度。输入输入一个长度小于50个字符的字符串。输出输出共有4行:第1行输出中序遍历序列;第2行输出后序遍历序列;第3行输出叶子.....
分类:
其他好文 时间:
2014-11-21 21:49:11
阅读次数:
259
一、层次遍历:借助队列实现 1 void LevelOrderTraversal(BiTree root) 2 { 3 BiTree e = root;//从根节点开始 4 Queue *q; 5 InitQueue(q); 6 7 if(e)//若根结点非...
分类:
其他好文 时间:
2014-11-19 00:29:25
阅读次数:
238
【题目】不使用递归,对二叉树进行先序、中序和后序遍历【思路】利用栈先序:1. 输出当前结点2. 把右孩子放到栈中3. 当前指针指向左孩子4. 重复1-3,直到叶子结点5. 如果栈不空,则从栈里POP出一个结点,赋值给当前节点6. 重复1-5中序:1. 如果当前节点不为空,把当前节点PUSH2. 当前...
分类:
其他好文 时间:
2014-11-17 15:30:06
阅读次数:
141
主要实现了双向链表的在尾部插入,在指定位置插入,前序遍历和后序遍历,以及删除指定节点和删除匹配数据的节点。因为在Windows下使用VS调试用CB写的C代码产生太多问题,因此使用了C++,但是没有使用太多C++的特性,应该很容易移植到C编译器下。下面是全部代码DouNode.cpp 1 #incl....
分类:
其他好文 时间:
2014-11-17 00:18:13
阅读次数:
278
(一)从上往下打印出二叉树的每个节点,同一层的节点按照从左到右的顺序打印。【层次遍历】 从上到下打印二叉树的规律:每一次打印一个节点的时候,如果该节点有子节点,则把该节点的子节点放到一个队列的末尾。...
分类:
其他好文 时间:
2014-11-16 20:14:43
阅读次数:
231
1.后序遍历的非递归实现。(左右根)难点:后序遍历的非递归实现是三种遍历方式中最难的一种。因为在后序遍历中,要保证左孩子和右孩子都已被访问并且左孩子在右孩子前访问才能访问根结点,这就为流程的控制带来了难题。下面介绍两种思路。思路:有个关键的就是unUsed这个标识符。当unUsed=1时,表示该节点...
分类:
其他好文 时间:
2014-11-11 16:28:14
阅读次数:
171
Given inorder and postorder traversal of a tree, construct the binary tree.Note:You may assume that duplicates do not exist in the tree.后序遍历的最后一个元素就是根...
分类:
其他好文 时间:
2014-11-11 00:40:07
阅读次数:
189
二叉树的各种遍历方法有 前序遍历 中序遍历 后序遍历 层序遍历。其中前三种遍历有递归程序可以实现,但是我们也有必要掌握其非递归版本的算法实现。正好在leetcode中遇到了遍历二叉树的问题,今天在这里一并总结了。首先,引用leetcode中关于二叉树节点的定义。1 // Definition ...
分类:
编程语言 时间:
2014-11-09 12:37:56
阅读次数:
329