二叉树的遍历
结构体存二叉树的每个节点,先序建立二叉树,分别按照先序中序后序递归遍历输出结果
输入格式:1 2 0 0 3 0 0
//date:2020.4.26 #include <bits/stdc++.h> using namespace std; typedef struct BinaryNode { int data; struct BinaryNode *left,*right; } Binode,*node; node createTree() { int a; cin>>a; node T; if(a==0) T=NULL; else { T = (node)malloc(sizeof(Binode)); T->data=a; T->left=createTree(); T->right=createTree(); } return T; } preOrder(node T) { if(T!=NULL) { cout<<T->data<<" "; preOrder(T->left); preOrder(T->right); } } MidOrder(node T) { if(T!=NULL) { MidOrder(T->left); cout<<T->data<<" "; MidOrder(T->right); } } PostOrder(node T) { if(T!=NULL) { PostOrder(T->left); PostOrder(T->right); cout<<T->data<<" "; } } int main() { node T; cout<<"按先序输入二叉树:输入0代表NULL 例如 1 2 0 0 3 0 0"<<endl; T=createTree(); preOrder(T); cout<<endl; MidOrder(T); cout<<endl; PostOrder(T); return 0; }
输出结果
1 2 3 2 1 3 2 3 1
增加了DFS和BFS遍历的代码
//date:2020.4.26 #include <bits/stdc++.h> using namespace std; typedef struct BinaryNode { int data; struct BinaryNode *left,*right; } Binode,*node; node createTree() { int a; cin>>a; node T; if(a==0) T=NULL; else { T = (node)malloc(sizeof(Binode)); T->data=a; T->left=createTree(); T->right=createTree(); } return T; } preOrder(node T) { if(T!=NULL) { cout<<T->data<<" "; preOrder(T->left); preOrder(T->right); } } MidOrder(node T) { if(T!=NULL) { MidOrder(T->left); cout<<T->data<<" "; MidOrder(T->right); } } PostOrder(node T) { if(T!=NULL) { PostOrder(T->left); PostOrder(T->right); cout<<T->data<<" "; } } void DFS(node T) { if(T!=NULL) cout<<T->data<<" "; if(T->left!=NULL) DFS(T->left); if(T->right!=NULL) DFS(T->right); } void BFS(node T) { queue<node> q; if(T!=NULL) q.push(T); while(!q.empty()) { T=q.front(); q.pop(); cout<<T->data<<" "; if(T->left!=NULL) q.push(T->left); if(T->right!=NULL) q.push(T->right); } } int main() { node T; cout<<"按先序输入二叉树:输入0代表NULL 例如 1 2 0 0 3 0 0"<<endl; T=createTree(); preOrder(T); cout<<endl; MidOrder(T); cout<<endl; PostOrder(T); cout<<endl; DFS(T); cout<<endl; BFS(T); return 0; }
输入的二叉树是 1 2 3 0 0 0 4 0 0
输出结果
1 2 3 4
3 2 1 4
3 2 4 1
1 2 3 4
1 2 4 3