遍历的方式有两种,一种是递归遍历,另外一种是非递归遍历
先序递归
void PreOrder (BitTree T){
if(T != NULL){
cout<< T->val << " ";
PreOrder (T->left);
PreOrder (T->right);
}
}
先序非递归,这里采用栈的数据结构来实现
void PreOrder (BitTree T){
stack<BitTree> s;
BitTree p = T;
while(p || !s.empty){
if(p){
cout<<p->val<<" ";
s.push(p);
p = p->left;
}else
{
p = s.top();
p = p->right;
p = p.pop();
}
}
}
中序、后续类似
深度优先遍历就是先序遍历
广度优先遍历使用队列结构遍历