普通二叉树的前序中序后序便利,包括递归跟非递归,一共六种,当作复习
#include <bits/stdc++.h>
using namespace std;
priority_queue<long> min_pq;
priority_queue<long, vector<long> , greater<long> > max_pq;
struct node{
char ch;
node *l;
node *r;
bool visited; //记录节点是否被访问过,用于后续遍历
node(char c){
ch = c;
l = NULL;
r = NULL;
visited = false;
}
};
void inti_visited(node *root){
if(root!=NULL){
root->visited = false;
inti_visited(root->l);
inti_visited(root->r);
}
}
//递归前序
void pre_order(node *root){
if(root!=NULL){
cout << root->ch;
pre_order(root->l);
pre_order(root->r);
}
}
//非递归前序,借助栈,先将根入栈,然后每次弹出栈顶并输出,然后将右节点入栈,再将左节点入栈
void pre_order_stack(node *root){
stack<node*> s;
s.push(root);
while(!s.empty()){
node* tmp = s.