二叉树的遍历方法可分为深度优先和广度优先两种,其中深度优先遍历适合使用栈来辅助实现,广度优先则使用队列,因为栈的先进后出和队列的先进先出特点正好符合遍历顺序的要求。深度优先遍历一般又分为前序遍历,中序遍历,后序遍历,对于一颗树来说,前序、中序、后序针对的都是它的根节点,其中前序遍历访问顺序是:根节点-->左节点-->右节点,中序遍历访问顺序是:左节点-->根节点-->右节点,后续遍历访问顺序是:左...
分类:
其他好文 时间:
2015-07-26 15:48:20
阅读次数:
122
求二叉树中的节点个数
求二叉树中叶子节点的个数
求二叉树的深度
求二叉树第K层的节点个数
递归遍历前序中序后序
非递归遍历前序中序后序层序
1 前序遍历
2 中序遍历
3 后序遍历
4 层序遍历
将二叉查找树变为有序的双向链表
判断两棵二叉树是否结构相同
判断二叉树是不是平衡二叉树
判断二叉树是否是搜索二叉树
求二叉树中两个节点的最低公共祖先节点
求二叉树中节点的最大距离
由前序遍历序列和中序遍历序列重建二叉树...
分类:
其他好文 时间:
2015-07-26 12:41:58
阅读次数:
186
二叉树是一种非常重要的数据结构,很多其它数据结构都是基于二叉树的基础演变而来的。对于二叉树,有前序、中序以及后序三种遍历方法。因为树的定义本身就是递归定义,因此采用递归的方法去实现树的三种遍历不仅容易理解而且代码很简洁。而对于树的遍历若采用非递归的方法,就要采用栈去模拟实现。在三种遍历中,前序和中序...
分类:
其他好文 时间:
2015-07-25 21:28:11
阅读次数:
133
这几天在复习关于树的各种算法,做了一些题,也搜索了网上各种算法,现在来总结一下树的各种常见算法。本文涵盖:二叉树先中后序遍历(递归&非递归)算法层次遍历(正序&逆序&锯齿形)非递归算法二叉树深度算法结点总数算法1.二叉树先序非递归遍历//先序非递归遍历 public ArrayList pre...
分类:
编程语言 时间:
2015-07-23 23:16:59
阅读次数:
253
#实现目录递归遍历,查找.log文件,并将结果存入文件importos
res=[]
deffindfile(dir):
foriinos.listdir(dir):
ifos.path.isdir(dir+os.sep+i)==True:
findfile(dir+os.sep+i)
else:
ifi[-4:]==‘.log‘:
res.append(dir+os.sep+i)
findfile(os.path.abspath(‘.‘))
#findfile(‘..
分类:
编程语言 时间:
2015-07-22 11:05:16
阅读次数:
215
1 //手工构造一颗二叉树 ,并给出递归和非递归2类7种遍历方法,树高,节点数求法和逆时针90度显示二叉树 2 //注意本文中2个 typename的使用层次 3 //递归遍历容易溢栈 4 #include 5 #include 6 #include //用到队列时需要包含...
分类:
其他好文 时间:
2015-07-21 20:14:08
阅读次数:
100
二叉树类代码:package binarytree;import linkqueue.LinkQueue;public class BinaryTree { class Node { public Object data; public Node lchild; public Node rch...
分类:
编程语言 时间:
2015-07-19 16:10:03
阅读次数:
139
中序 遍历的几种情况
分析1:什么时候访问根、什么时候访问左子树、什么访问右子树
当左子树为空或者左子树已经访问完毕以后,再访问根
访问完毕根以后,再访问右子树。
分析2:非递归遍历树,访问结点时,为什么是栈,而不是其他模型(比如说是队列)。
先走到的后访问、后走到的先访问,显然是栈结构
分析3:结点所有路径情况
步骤1:
如果结点有左子...
分类:
其他好文 时间:
2015-07-19 10:13:11
阅读次数:
103
递归遍历比较简单,本文主要总结非递归遍历。前序遍历前序遍历按照“根结点-左孩子-右孩子”的顺序进行访问。
对于任一结点P:
访问结点P,并将结点P入栈;
判断结点P的左孩子是否为空,若为空,则取栈顶结点并进行出栈操作,并将栈顶结点的右孩子置为当前的结点P,循环至1);若不为空,则将P的左孩子置为当前的结点P;
直到P为NULL并且栈为空,则遍历结束。
void preorder(TreeNode...
分类:
其他好文 时间:
2015-07-17 18:48:34
阅读次数:
110
先序遍历
void PreOrder_Nonrecursive1(BiTree T) //先序遍历的非递归
{
if(!T)
return ;
stack s;
BiTree curr = T;
while(curr != NULL || !s.empty())
{
while(...
分类:
其他好文 时间:
2015-07-17 08:25:49
阅读次数:
131