二叉樹遍歷

2021-09-12 00:06:49 字數 1120 閱讀 1730

時間限制:1 秒 記憶體限制:32 兆 特殊判題:否

編乙個程式,讀入使用者輸入的一串先序遍歷字串,根據此字串建立乙個二叉樹(以指標方式儲存)。 例如如下的先序遍歷字串: abc##de#g##f### 其中「#」表示的是空格,空格字元代表空樹。建立起此二叉樹以後,再對二叉樹進行中序遍歷,輸出遍歷結果。

輸入描述:

輸入包括1行字串,長度不超過100。

輸出描述:

可能有多組測試資料,對於每組資料,

輸出將輸入字串建立二叉樹後中序遍歷的序列,每個字元後面都有乙個空格。

每個輸出結果佔一行。

示例1輸入

複製abc##de#g##f###

輸出複製

c b e g d f a

對於該題已知前序遍歷的結果,需要輸出其中序遍歷的結果。因此首先我們需要根據二叉樹的前序遍歷的結果來構造二叉樹,由於該問題在遍歷的結果中同時輸出了空節點的值,因此其只需要該序列便可以唯一的確定二叉樹的結構。基本思路就是採用先序遍歷的步驟來構造二叉樹。然後再對構建後的二叉樹進行中序遍歷(此時無需輸出空節點的值)

#include

#include

#define n 101

using namespace std;

struct nodetree[n]

;int loc;

//tree陣列已分配的結點個數

char str[n]

;int cnt=0;

node*

create()

node*

build()

else

cnt++;if

(root->c!=

' ')

return root;

}void

inorder

(node* t)

intmain()

return0;

}/*abc##de#g##f###

c b e g d f a

*/

構建二叉樹 遍歷二叉樹

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

二叉樹遍歷

二叉樹的遍歷非常重要,但對已一棵比較複雜的樹,要寫出它的先 中 後序遍歷,往往不是那麼簡單,也很容易犯錯。這裡介紹一種比較直觀且不容易犯錯的方法。對於圖1所示的二叉樹,要寫出它的先 中 後序遍歷,往往很容易出錯。圖 1 其實,我們可以用圖2中的紅線描畫出二叉樹的輪廓。圖 2 而對於樹上的每乙個節點,...

二叉樹遍歷

描述 華為實習生招聘,有一道類似如下的題目 給出二叉樹,如圖1所示 圖 1 二叉樹 要求給出中序遍歷的結果。下面分別就前序遍歷 中序遍歷 後序遍歷進行分析。規律 前序遍歷 根在前 子樹在根後且左子樹比右子樹靠前 中序遍歷 根在中 左子樹在根左邊,右子樹在根右邊 後序遍歷 根在後 子樹在根前且左子樹比...