牛客網刷題 實現二叉樹先序,中序和後序遍歷

2021-10-14 09:47:55 字數 1399 閱讀 7506

分別按照二叉樹先序,中序和後序列印所有的節點。

輸入描述:

輸入一棵樹

輸出描述:

輸出遍歷的二維陣列

輸入

輸出

[[1,2,3],[2,1,3],[2,3,1]]

本題思路主要是通過遞迴實現對二叉樹的遍歷。

通過遞迴,以及新增值的順序控制結果是那種方式的遍歷。

public

class

solution

public

void

getorder

(treenode root,

int[

] nums)

nums[0]

[pre++

]= root.val;

getorder

(root.left, nums)

; nums[1]

[midd++

]= root.val;

getorder

(root.right, nums)

; nums[2]

[post++

]= root.val;

}public

intgetrootsize

(treenode root)

return1+

getrootsize

(root.left)

+getrootsize

(root.right);}

}

先序遍歷

nums[0][pre++] = root.val; 根左右

getorder(root.left, nums); 左節點遞迴

getorder(root.right, nums); 右節點遞迴

中序遍歷

getorder(root.left, nums); 左節點遞迴

nums[1][midd++] = root.val; 左根右

getorder(root.right, nums); 右節點遞迴

後序遍歷

getorder(root.left, nums); 左節點遞迴

getorder(root.right, nums); 右節點遞迴

nums[2][post++] = root.val; 左右根

小夥伴如果想測試的話,可以直接到牛客網這個鏈結做測試

實現二叉樹先序,中序和後序遍歷-牛客網

先序中序重建二叉樹

includeusing namespace std vectorpre,in int p typedef struct node vectorpost int rec int l,int r 通過前序和後序得到樹 int main for int i 0 i tem in.push back te...

先序中序轉二叉樹

在紙上計算一下他們轉的過程就很容易發現規律 寫程式更簡單,只需要計算出每個子樹的起始位置 計算的時候使用靜態鍊錶更為方便 include include include include include using namespace std struct node vector int in,pre...

二叉樹 先序 中序 後序

同學整理的,順便傳上分享下 一,已知先序和中序 求後序 1 include2 include3 include4 using namespace std 5char s1 10 s2 10 ans 10 6 int o 0 7 void tree int n char s1 char s2 char...