二叉樹的中序遍歷


題目描述

在計算機科學中,二叉樹是每個結點最多有兩個子樹的有序樹。通常子樹的根被稱作“左子樹”(left subtree)和“右子樹”(right subtree)。如下圖,每個節點有一個編號。樹的訪問方式叫做中序遍歷,方法為:首先中序遍歷左(右)子樹,再訪問根,最后中序遍歷右(左)子樹。如下圖,中序遍歷為:4、3、7、1、6、2、5、8。現在輸入一棵二叉樹(根的編號一定是1),請你輸出二叉樹的中序遍歷。

Failed to load picture

輸入輸出格式

輸入格式:

第一行,一個整數n,代表二叉樹節點個數,它的范圍在[1...10000];

第2-n+1行,每行三個整數,第一個整數代表第i個節點的編號,第二個整數左兒子的編號,第三個整數為右兒子的編號,如果沒有左或者右兒子則為0。

輸出格式:

依次輸出二叉樹中序遍歷節點。

輸入輸出樣例

輸入樣例:
8 
1 3 5 
2 0 0 
3 4 7 
4 0 0 
5 6 8 
6 0 2 
7 0 0 
8 0 0 
輸出樣例:
4 3 7 1 6 2 5 8

思路:搜左,出根,搜右。
//程序名:新的C++程序
//作者: 

#include<iostream>
#include<fstream>
#include<algorithm>

using namespace std;
int f;
struct tree
{
    int root;
    int ls,rs,no;
}a[10001];
void mid(int i)
{
    if(a[i].ls)mid(a[i].ls);
    if(!f)cout<<i,f++;
    else cout<<" "<<i;
    if(a[i].rs)mid(a[i].rs);
}
int m;
int main()
{
    cin>>m;
    for(int i=1;i<=m;i++)cin>>a[i].no>>a[i].ls>>a[i].rs;
    mid(1);
    return 0;
}
View Code

 




免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM