廣度遍歷二叉樹和深度遍歷二叉樹演算法

2022-03-22 00:09:07 字數 766 閱讀 3077

二叉樹演算法基本和遞迴有關,前中後序演算法就不提了,主要看一下深度優先遍歷和廣度優先遍歷。實現這2種遍歷需要借助棧或者佇列來儲存中間結果,原因是遍歷過程出現了回溯。

1

//筆試題:廣度遍歷二叉樹、深度遍歷二叉樹

23 #include4 #include5 #include6

7using

namespace

std;89

struct

node

12void visit()

13 node* left,*right;

14};

1516

//構造乙個二叉樹

17void buildtree(node*root)

1825

26//

廣度優先遍歷樹

2728 queueqnode;

2930

void breadthfirstvisit(node*root)

3141}42

43//

深度優先遍歷樹

4445 stacksnode;

4647

void

dumpstack()

4857 cout<59void deepfirstvisit(node*root)

6073}74

intmain()

75

總結一下,至少對於命令式程式設計來說,思考問題的時候要從計算機的角度,而不是直觀的認識看問題,才能發現要解決的問題的實質。

二叉樹層次遍歷 廣度遍歷和深度遍歷

問題 二叉樹層次遍歷 問題描述 給定乙個二叉樹,返回其按層次遍歷的節點值。即逐層地,從左到右訪問所有節點 例子 給定二叉樹 3,9,20,null,null,15,7 3 920 157返回其層次遍歷結果 3 9 20 15,7 思路 廣度遍歷和深度遍歷。與一般的廣度遍歷不同的是,每次遍歷都將que...

對稱二叉樹 深度遍歷與廣度遍歷

問題 對稱二叉樹 問題描述 給定乙個二叉樹,檢查它是否是映象對稱的。比如,下面這個二叉樹是映象對稱的 1 2 2 3 4 4 3 而這個二叉樹則不是映象對稱的。1 2 2 3 3例子 輸入 1,2,2,3,4,4,3 輸出 true 思路 映象對稱意味著左子樹與右子樹映象對稱,在遍歷左子樹或者右子樹...

廣度優先遍歷二叉樹

同學電面被問到乙個問題 如何獲得完全二叉樹的最後乙個節點?二叉樹以鍊錶的形式儲存。沒想到合適的辦法,用廣度遍歷吧,最後乙個節點就是了,如下 include include 樹節點的定義 struct tnode 佇列節點的定義 struct qnode 佇列的定義 struct queue 初始化佇...