復旦14年機試 二叉樹遍歷

2021-09-12 14:29:36 字數 1361 閱讀 2418

第三題:二叉樹遍歷

問題定義

輸入一棵二叉樹,輸出樹的前、中、後序遍歷結果。

輸入乙個整數n(n<= 10000),表示樹中有n個結點(編號0~n-1)。

接下來n行,依次為結點0~結點n-1的左右孩子情況。

每行3個整數,f,l,r。l,r為f的左右孩子。l,r如果為-1表示該位置上沒有孩子。

分三行分別輸出樹的前中後序遍歷。

同一行中的數字,用乙個空格間隔。

輸入樣例

50 3 1

1 2 -1

2 -1 4

3 -1 -1

4 -1 -1

輸出樣例

0 3 1 2 4

3 0 2 4 1

3 4 2 1 0

#include

#include

#include

#include

#include

#include

#include

#include

#include

#include

#include

#include

#include

#include

using

namespace std;

const

int max =

10010

;typedef

struct bitnode

bitnode,

*bitree;

bitree node[max]

;int n, f, l, r, root =

0, flag =0;

void

preorder

(bitree t)

void

inorder

(bitree t)

void

postorder

(bitree t)

intmain()

for(

int i=

0; i(r !=-1

)}while

(root < n &&

!node[root]

->is_root) root++

;preorder

(node[root]);

flag =0;

printf

("\n");

inorder

(node[root]);

flag =0;

printf

("\n");

postorder

(node[root]);

return0;

}

機試書 二叉樹遍歷

最開始一直想著在字串上 換順序 導致思路很不清晰。其實,就活學活用已經掌握的方法 根據前序和中序遍歷結果來構造二叉樹!構造二叉樹之後,再對其進行後序遍歷 遞迴的方法 要注意的點 題目說輸入 字串 但是其實一般來說,為了程式設計的方便,可以定義char陣列來儲存字串並進行操作,用法如下 char a ...

王道機試指南 二叉樹與二叉搜尋樹

二叉樹題目鏈結二叉樹 題意 在乙個完全二叉樹中給出乙個子樹的根和樹的最後乙個結點,求其子樹的結點個數。思路 分為三種情況 其中2 3情況均為乙個滿二叉樹,只需要知道其子樹的深度就可以直接算得,而對於第一種情況,需要先計算出其最後一層的結點樹,再加上以上的結點數。如下 include include ...

構建二叉樹 遍歷二叉樹

陣列法構建二叉樹 public class main public static void main string args 用陣列的方式構建二叉樹 public static void createbintree 把linkedlist集合轉成二叉樹的形式 for int j 0 j 最後乙個父節...