第1个回答 2013-09-18
9二叉树的遍历(1)遍历:遍历(traverse)一个有限结点的集合,意味着对该集合中的每个结点访问且仅访问一次。(2)三种遍历方式先序遍历(VLR):先序就是先访问结点元素,然后是左,然后是右。若二叉树不为空 访问根结点; 先序遍历左子树; 先序遍历右子树。 先序遍历序列: A B D C E F template<class T>void BinaryTree<T>::PreOrder(){ PreOrder(root);}template<class T>void BinaryTree<T>::PreOrder(BTNode<T>* t){ if(t) { cout<<(t->element); PreOrder(t->lChild); PreOrder(t->rChild); }} 中序遍历(LVR)若二叉树不为空 中序遍历左子树; 访问根结点; 中序遍历右子树。 中序遍历序列:B D A E C F template<class T>void BinaryTree<T>::InOrder(){ InOrder(root);}template<class T>void BinaryTree<T>::InOrder(BTNode<T>* t){ if(t) { InOrder(t->lChild); cout<<(t->element); InOrder(t->rChild); }} 后序遍历 (LRV)若二叉树不为空
后序遍历左子树;
后序遍历右子树;
访问根结点。后序遍历序列:D B E F C A template<class T>void BinaryTree<T>::PostOrder(){ PostOrder(root);}template<class T>void BinaryTree<T>::PostOrder(BTNode<T>* t){ if(t) { PostOrder(t->lChild); PostOrder(t->rChild); cout<<(t->element); }}本回答被网友采纳
第2个回答 2013-09-18
l先根遍历法(先序遍历法)
�0�1若二叉树非空,则依次执行如下操作:
ü访问根结点;
ü遍历左子树;
ü遍历右子树。
l中根遍历法(中序遍历法)
�0�1若二叉树非空,则依次执行如下操作:
ü遍历左子树;
ü访问根结点;
ü遍历右子树。
l后根遍历法(后序遍历法)
�0�1若二叉树非空,则依次执行如下操作:
ü遍历左子树;
ü访问根结点;
ü遍历右子树;
第3个回答 2013-09-18
先序:左 自身 右中序:自身 左 右后序:左 右 自身 用的都是递归的思想~