樹的前序、中序、後序遍歷本質上都可以認為是深度遍歷。
那樹的層序遍歷是什麼?
總之先寫一下樹的前序遍歷的遞迴寫法和迭**法。
非遞迴寫法就是主動申請乙個棧,來實現遞迴棧的效果。需要注意的是入棧的順序,棧先進後出filo。// 遞迴寫法
public
class
solution
list.
add(node.val);if
(node.left != null)
if(node.right != null)
return list;
}}
中序遍歷:public
class
solution1
stack.
push
(node)
;while
(!stack.
isempty()
)if(tmp.right != null)
}return list;
}}
遞迴寫法:
非遞迴寫法:class
solution
if(root.left != null)
list.
add(root.val);if
(root.right != null)
return list;
}}
層序遍歷public
class
solution
stack.
add(root)
;while
(!stack.
isempty()
)if(node.right != null)
}return list;
}}
就是一層一層的遍歷整個樹
遞迴寫法:
非遞迴寫法:class
solution
list.
get(layer)
.add
(node.val);if
(node.left != null)
if(node.right != null)
}public list
>
levelorder
(treenode root)
helper
(list,root,0)
;return list;
}}
class
solution
queue.
add(root)
;int level =0;
while
(!queue.
isempty()
)if(node.right != null)
} level++;}
}}
深度遍歷和廣度遍歷
圖的遍歷,所謂遍歷,即是對結點的訪問。乙個圖有那麼多個結點,如何遍歷這些結點,需要特定策略,一般有兩種訪問策略 深度優先遍歷,從初始訪問結點出發,我們知道初始訪問結點可能有多個鄰接結點,深度優先遍歷的策略就是首先訪問第乙個鄰接結點,然後再以這個被訪問的鄰接結點作為初始結點,訪問它的第乙個鄰接結點。總...
樹的遍歷 深度優先遍歷和廣度優先遍歷
廣度優先遍歷,類似於樹的按層次遍歷。設圖g是連通的,且圖g的初態是所有頂點均未被訪問過。從圖g的任一頂點vi出發按廣度優先搜尋遍歷圖的步驟是 訪問vi後,依次訪問與vi鄰接的所有頂點w1,w2,w3.wn,再按w1,w2,w3.wn的順序訪問其中每個頂點的所有未被訪問的鄰接點,再按此順序,依次訪問它...
深度遍歷和廣度遍歷(函式)
mgraph是鄰接矩陣儲存的圖,定義如下 define maxvertexnum 10 定義最大頂點數 typedef int vertex 用頂點下標表示頂點,為整型 typedef struct mgraph 用鄰接矩陣表示的圖的型別 裁判測試程式樣例 include stdio.h inclu...