機試書 二叉樹遍歷

2021-09-24 02:09:21 字數 831 閱讀 3642

最開始一直想著在字串上「換順序」,導致思路很不清晰。

其實,就活學活用已經掌握的方法——根據前序和中序遍歷結果來構造二叉樹!

構造二叉樹之後,再對其進行後序遍歷(遞迴的方法)。

要注意的點:

① 題目說輸入「字串」,但是其實一般來說,為了程式設計的方便,可以定義char陣列來儲存字串並進行操作,用法如下:

char a[30]; //可以自設字串大小

scanf("%s",a); //很靈活每次輸入都相當於「重新整理」。注意不加「&」,因為字元陣列名a就是首位址,不需要再取位址!

int l = strlen(a); //求字元陣列儲存的字串長度,用strlen

② 注意二叉樹的結構體定義中,建構函式的寫法。並且注意val值的型別是char不是int了。

#include#includeusing namespace std;

struct btnode

};//將前序和中序遍歷結果進行對照,劃分出左子樹+右子樹,遞迴

btnode * constru(char* pre,int prestart,int preend,char* in, int instart,int inend)

}return head;

}void postorder(btnode* head)

int main()

return 0;

}

復旦14年機試 二叉樹遍歷

第三題 二叉樹遍歷 問題定義 輸入一棵二叉樹,輸出樹的前 中 後序遍歷結果。輸入乙個整數n n 10000 表示樹中有n個結點 編號0 n 1 接下來n行,依次為結點0 結點n 1的左右孩子情況。每行3個整數,f,l,r。l,r為f的左右孩子。l,r如果為 1表示該位置上沒有孩子。分三行分別輸出樹的...

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

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

構建二叉樹 遍歷二叉樹

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