在C/C++语言中,这是数据结构的问题,牵涉到对二叉树的操作,这里主要是对二叉树的遍历中最常见的方法: 前序,中序,后序;
先(根)序的遍历算法:
若二叉树为空树,则空操作;否则,
(1)访问根结点;
(2)先序遍历左子树;
(3)先序遍历右子树。
中(根)序的遍历算法:
若二叉树为空树,则空操作;否则,
(1)中序遍历左子树;
(2)访问根结点;
(3)中序遍历右子树。
后(根)序的遍历算法:
若二叉树为空树,则空操作;否则,
(1)后序遍历左子树;
(2)后序遍历右子树;
(3)访问根结点。
给你一个C++的算法:
void Btree::BinTraversepre(BitTree BT)//按先序输出二叉树中的所有结点{ if(BT) { cout<<BT->data<<" "; BinTraversepre(BT->lchild); BinTraversepre(BT->rchild); }}
void Btree::BinTraversein(BitTree BT)//按中序输出二叉树中的所有结点{ if(BT) { BinTraversein(BT->lchild); cout<<BT->data<<" "; BinTraversein(BT->rchild); }}
void Btree::BinTraversepost(BitTree BT)//按后序输出二叉树中的所有结点{ if(BT) { BinTraversepost(BT->lchild); BinTraversepost(BT->rchild); cout<<BT->data<<" "; }}
a
/ \
b c
/\ /
e f g
前序遍历是:abefcg中序遍历是:ebfagc后序遍历是:efbgca
还有一个例子给你两个附件;
|
|