//所谓线索二叉树无非是为了让原本指向NULL的节点指向一个详细的 //已经存在的节点,逻辑上实现指针的无空指向的实现。以下是我中 //序线索二叉树的实现。还是把先序线索二叉树与后序线索分开来写吧。 #include<iostream> using namespace std; template<t ...
分类:
其他好文 时间:
2017-07-16 10:10:03
阅读次数:
193
在前面先后介绍了二叉树先序遍历的非递归算法和中序遍历的非递归算法,这里则来介绍二叉树后序遍历非递归算法,二叉树后序非递归遍历真的非常之 重要,因为它具有独特的特性(文章结尾会阐述),所以,在很多与二叉树相关的复杂算法中,经常要用到二叉树后序遍历的非递归算法。并且在互联网面试笔 试也经常考察该算法,所 ...
分类:
编程语言 时间:
2017-07-16 00:09:05
阅读次数:
200
首先要明确前序,中序和后序的遍历顺序:前序:父节点,左子节点,右子节点;中序:左子节点,父节点,右子节点;后序:左子节点,右子结点,父节点;明确之后,首先根据前序遍历,确定整个二叉树的根节点(前序的第一个节点);再通过中序遍历,可以直接根据根节点将整个二叉树分为左右两颗子树.这时再逐步根据前序和中序... ...
分类:
其他好文 时间:
2017-07-15 13:53:43
阅读次数:
168
二叉树遍历技巧: 前序遍历 中序遍历 后序遍历 如上图所看到的 二叉树遍历訪问路径是同样的, 仅仅是訪问结点的时机不同。 沿着图中的虚线出发,每一个结点经过三次,第一次经过每一个结点,訪问每一个结点,得到的序列就是先序遍历(ABDEFGC)。第二次经过每一个结点,訪问每一个结点,得到的序列就是中序遍 ...
分类:
其他好文 时间:
2017-07-14 10:01:30
阅读次数:
137
中序表达式转后序表式式: 将中序表达式所有括号补全,然后将所有运算符向右移出无匹配的第一个右括号,去掉括号即为后序表式式 中序表达式转前序表式式: 将中序表达式所有括号补全,然后将所有运算符向左移出无匹配的第一个左括号,去掉括号即为前序表式式 算法: 利用运算符栈(OPTR)和数据栈(OPND)将中 ...
分类:
其他好文 时间:
2017-07-12 15:18:49
阅读次数:
162
1. 前序遍历:根左右 中序遍历:左根右 后序遍历:左右根 2.深度优先遍历:(先进去的后出来)利用栈:先压右子树,再压左子树 广度优先遍历:(先进去的先出来)利用队列:先压左子树,再压右子树 3.利用前中序重建二叉树: ...
分类:
其他好文 时间:
2017-07-12 10:02:23
阅读次数:
143
这种算法只用到了一次入栈一次出栈就可以了, ...
分类:
编程语言 时间:
2017-07-11 23:11:51
阅读次数:
157
题解:给出了二叉树的中序和后序。重建二叉树。输出路径和最短的叶子的值。 两个模板: 给出前序和中序建树: Node* build (int n, int* preo, int* ino) { Node* node = new Node; int i = 0; if (n <= 0) return N ...
分类:
其他好文 时间:
2017-07-10 10:22:46
阅读次数:
150
1. 问题描述: 旋转一颗二叉树(每一个节点的左右子数都要交换) 2. 解答: 这题没看答案之前我是用后序遍历(先左后右最后中)去做的,很奇怪自己为什么没有一开始就想到更符合直觉的先序遍历~~~ 本人算法的伪代码 : function invert (root) if root为空 then end ...
分类:
其他好文 时间:
2017-07-09 14:50:20
阅读次数:
212
【题目】 从上往下打印出二叉树的每一个结点,同一层的结点依照从左到右的顺序打印。比如: 打印结果:8。6,10,5,7,9,11。 【分析】 二叉树遍历方式:前序。中序。后序,另一种广度优先遍历。在对图遍历时涉及到,而二叉树能够看作退化的图,从样例中能够看出,打印顺序是按层决定的,观察发现,打印完根 ...
分类:
其他好文 时间:
2017-07-07 21:32:19
阅读次数:
171