看了版主converse写的二叉树的递归与非递归遍历
http://www.cppblog.com/converse/archive/2006/07/08/9577.html
其中, 版主写到:
"感觉其中后序遍历的非递归算法比较困难,想了很久最后的实现还是不够优雅"
俺也写了一个玩玩, 功能一样, 但是思路不一样, 呵呵
[code]
#include
by ypxing - C/C++ - 2007-11-16 15:37:10 阅读(1686) 回复(1)
算法导论中有一个题目,12.1-3,要求用非递归算法执行中序树遍历。根据提示我花了很长很长的时间才写出用栈作为辅助手段的代码。上面提示所说的第二种算法我却没想出来。谁能提示一下。。 template < typename T > class Item { public: Item (T v) :value(v),lchild(NULL),rchild(NULL){} public: T value; Item *lchild; Item *rchild; }; template < typename T > void inorder_nonr...
以中序遍历为例: void ProOrder(BT root) { if(root==NULL) return; else{ printf("%d",root->;data); ProOrder(root->;left); ProOrder(root->;right); } } 用没有哪位大侠可以详细的讲解一下,这个是如何递归调用并打印的? 我看了好久,用点似懂非懂,脑袋瓜实在是大!
这是二叉树创建并中序遍历的程序可是一直有错
#include
[code]def isnum(a): if type(a)==type(1): return True return False def first_root(a): print a[1],'-', if isnum(a[0]): print a[0],'-', else: first_root(a[0]) if isnum(a[2]): print a[2],'-', else: first_root(a[2]) def middle_root(a): if isnum(a[0]): print a[0],'-', else: middle_root(a[0]) print a[1],'-', ...
费了两天时间写的,包括前中后序遍历的递归和非递归算法,还有层序遍历总共2*3 + 1 = 7中遍历二叉树的算法,感觉其中后序遍历的非递归算法比较困难,想了很久最后的实现还是不够优雅,请大家指正~~ 总共三个文件,一个头文件,一个对应的cpp文件,还有一个用于测试的文件. BinaryTree.h: [code] /******************************************************************** created: 2006/07/04 filename: BinaryTree.h author: 李创 ...
问一个数据结构的问题.如何使用非递归方法求一颗二叉树的高度呢?这棵二叉树是使用二叉链表来构建的. 我知道递归化为非递归一般是使用堆栈来解决问题.可能是我能力比较弱,我想了很久也构建不出使用堆栈来求二叉树高度的算法,望各位达人能给予帮助,在此,先谢谢了.
要求是这样的 现在我申请了一块共享内存 然后我有一个结构 struct A { int a; char b[10]; }; 我现在想在共享内存中建一个二叉树,把这样的结构当作结点插进去 不知道应该怎么操作啊 谢谢大家了