遍歷下面圖片

#include <bits/stdc++.h>
using namespace std;
struct Node{ //這是二叉樹的一個結點,寫成了結構體的形式
int value; //該結點對應的值,根據需要可是string等其他型別
int left; //左枝編號
int right; //右枝編號
};
Node ecs[100]; //這是一個陣列,存所有結點的資訊
int n;
void XianXu(int id){ //id指的是esc陣列的下標位置
if(id == 0) return; //空的結點,不存在
cout<<ecs[id].value<<" "; //根
XianXu(ecs[id].left); //左
XianXu(ecs[id].right); //右
}
void ZhongXu(int id) {
if(id == 0) return; //空的結點,不存在
ZhongXu(ecs[id].left); //左
cout<<ecs[id].value<<" "; //根
ZhongXu(ecs[id].right); //右
}
void HouXu(int id) {
if(id == 0) return; //空的結點,不存在
HouXu(ecs[id].left); //左
HouXu(ecs[id].right); //右
cout<<ecs[id].value<<" "; //根
}
int main() {
ios::sync_with_stdio(0);
cin>>n;
for(int i = 1;i <= n ;i++){//陣列的第0項忽略掉,從第1項開始記錄結點,并且,盡量讓第一項作為根節點
int value;
int left;
int right;
cin>>value>>left>>right;
ecs[i].value = value;
ecs[i].left = left;
ecs[i].right = right;
}
XianXu(1); //遍歷都是從根節點出發的,而根節點一般是第1項,所以寫上這個
cout<<endl;
ZhongXu(1);
cout<<endl;
HouXu(1);
cout<<endl;
return 0;
}
/*
11
5 2 3
3 4 5
7 6 7
1 0 0
2 8 0
4 9 10
6 0 0
6 0 0
8 0 0
9 11 0
10 0 0
*/

轉載請註明出處,本文鏈接:https://www.uj5u.com/yidong/256017.html
標籤:其他
