python實現二叉樹深度遍歷

2021-08-27 03:40:47 字數 1688 閱讀 1615

其實深度優先遍歷你可以把它看成是前序遍歷,比如對於如下二叉樹:

其深度遍歷的結果是:1,2,4,8,9,5,3,6,7

一、採用遞迴的方式進行遍歷。

二、利用,先將根入棧,再將根出棧,並將根的右子樹,左子樹存入棧,按照先進後出規則來實現深度優先遍歷。

class node():

# 節點類

def __init__(self, data=-1):

self.data = data

self.left = none

self.right = none

class tree():

# 樹類

def __init__(self):

self.root = node()

def add(self, data):

# 為樹加入節點

node = node(data)

if self.root.data == -1: # 如果樹為空,就對根節點賦值

self.root = node

else:

myqueue =

treenode = self.root

while myqueue: # 對已有的節點進行層次遍歷

treenode = myqueue.pop(0)

if not treenode.left:

treenode.left = node

return

elif not treenode.right:

treenode.right = node

return

else:

def dfs(self,root): #遞迴實現深度優先遍歷

if root == none:

return

print(root.data)

self.dfs(root.left)

self.dfs(root.right)

def dfs_stack(self,root): #基於棧資料結構實現的深度遍歷

if root == none:

return

stack =

while stack:

now_node = stack.pop()

print(now_node.data)

if now_node.right != none:

if now_node.left != none:

if __name__ == '__main__':

# 主函式

datas = [1,2, 3, 4, 5, 6, 7, 8, 9]

tree = tree() # 新建乙個樹物件

for data in datas:

tree.add(data) # 逐個加入樹的節點

print('遞迴實現前序遍歷:')

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

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

深度優先遍歷二叉樹

3 深度優先遍歷二叉樹。include include include typedef struct treenode 樹節點結構體定義 treenode insertsbonmyleft treenode sb treenode insertsbonmyright treenode sb char...

二叉樹深度優先遍歷

在二叉樹的深度優先遍歷中分為前序遍歷 中序遍歷和後序遍歷,其中根據前序遍歷和中序遍歷或後序遍歷和中序遍歷可以推算出完整的二叉樹。三種遍歷方式為 前序遍歷 根節點 左子樹 右子樹 中序遍歷 左子樹 根節點 右子樹 後序遍歷 左子樹 右子樹 根節點 由上述三種遍歷方式可知中序遍歷最為重要,因為中序遍歷可...