C#完成的二叉树递归和非递归的遍历。BTreeNode是节点类,Visited是ENUM类型的表示当前节点是否被访问以及被访问的是左孩子还是右孩子(非递归后序遍历用到)
BTree是二叉树类,preVisit,InVisit,BackVisit分别是递归的前中后序遍历,preVisit1,InVisit1,BackVisit1分别是 非递归的前中后序遍历...
分类:
其他好文 时间:
2014-09-12 11:57:33
阅读次数:
190
//中序遍历int inorder_tree_walk(BinTreeNode * root){ if(root == NULL){ return -1; } stack s; BinTreeNode * p = root; while(!s.empty(...
分类:
其他好文 时间:
2014-09-05 14:15:11
阅读次数:
142
前序遍历二叉树int preorder_tree_walk(BinTreeNode * root){ if(root == NULL){ return -1; } stack s; BinTreeNode * p = root; while(!s.empt...
分类:
其他好文 时间:
2014-09-05 14:10:51
阅读次数:
170
#region二叉树的先序遍历2///3///二叉树的先序遍历4///5///6///7publicvoidBinTree_DLR(ChainTree tree)8 {9if(tree ==null)10return;1112//先输出根元素13 Console.Write(tree.data +"...
分类:
其他好文 时间:
2014-09-04 16:22:49
阅读次数:
261
遍历二叉树
二叉树是一种非线性的数据结构。所谓的遍历二叉树就是按某种顺序访问二叉树中的每个节点,要求每个节点被访问一次且仅一次。
遍历操作实际上是将非线性结构线性化过程,其结果为线性序列。
二叉树的操作
(1)先序遍历---结束的条件是二叉树是否为空 TLR
先访问根节点;
再先序访问左子树;
再先序访问右子树。
(2)中序遍历---结束的条件是二叉树是否为...
分类:
其他好文 时间:
2014-08-29 18:24:18
阅读次数:
154
题意:给出中序和后序序列,求从根到叶子结点这样路径和值最小的叶子结点。如果和值相等,则选择叶子结点值较小的那个。
思路:由中序和后序序列递归地构造二叉树。顺序存储显然不行,使用链式存储。由于每个结点输入的是数字而不是字母,这里采用整型数组来存的,而不再是字符串,可能更方便些。build(n,a1,a2)函数是利用中序序列a1和后序序列a2构造有n个结点的二叉树,返回根结点指针。递归构造出二叉树后...
分类:
其他好文 时间:
2014-08-26 19:40:26
阅读次数:
200
二叉树的广度遍历想想还是比较简单的,利用队列存储当前结点的左儿子和右儿子用作未来的访问。
代码实现
/**
* 源码名称:TreeBFS.java
* 日期:2014-08-25
* 程序功能:二叉树广度遍历
* 版权:CopyRight@A2BGeek
* 作者:A2BGeek
*/
import java.util.LinkedList;
import java.u...
分类:
其他好文 时间:
2014-08-25 11:53:44
阅读次数:
185
马上又要秋招了,赶紧复习下基础知识。这里复习下二叉树和图的深搜与广搜。从图的遍历说起,图的遍历方法有两种:深度优先遍历(Depth First Search), 广度优先遍历(Breadth First Search)。图搜索的经典应用走迷宫、N皇后、二叉树遍历等。遍历:定义按某种顺序访问“图”中所有的节点。...
分类:
其他好文 时间:
2014-08-24 12:58:32
阅读次数:
8475
题意:题目意思是给出后缀表达式,可以通过栈来计算表达式的值,即转化为中缀表达式。然后如果现在不用栈,而是用队列来操作,即每遇到一操作符时,进行两次pop和一次push。(这里注意,先pop出来的作为第二操作数,操作符假设是不满足交换律和结合律的)因为队列的pop和push,与栈的不同么,所以,问队列的输入应该是怎样的,才能和给定的输入用栈来计算,所得值相同。(即转化为相同的中缀表达式)
思路:先...
分类:
其他好文 时间:
2014-08-24 01:52:21
阅读次数:
230