求二叉樹的所有路徑

2021-09-10 23:01:33 字數 1908 閱讀 6621

二叉樹的路徑:從根結點到葉子結點

思路:初始化2個列表,乙個儲存到達本節點之前的節點,另乙個儲存所有的路徑

# 構造一棵樹

class node(object):

"""節點

"""def __init__(self, left, right, data):

self.data = data

self.left = left

self.right = right

class tree(object):

def add_root(self, node):

self.root = node

def add_left_tree(self, node, n_node):

node.left = n_node

def add_right_tree(self, node, n_node):

node.right = n_node

tree = tree()

node = node(none, none, 15)

tree.add_root(node)

node_8_22 = node(none, none, 22)

node_8_23 = node(none, none, 23)

node_10_18 = node(none, none, 18)

node_40_9 = node(none, none, 9)

node_40_12 = node(none, none, 12)

node_1 = node(node_8_22, node_8_23, 8)

node_2 = node(none, node_10_18, 10)

node_3 = node(none, none, 20)

node_4 = node(node_40_9, node_40_12, 40)

node_5 = node(none, none, 6)

tree.add_left_tree(tree.root, node_3)

tree.add_left_tree(tree.root.left, node_1)

tree.add_right_tree(tree.root.left, node_2)

tree.add_right_tree(tree.root, node_5)

tree.add_right_tree(tree.root.right, node_4)

def get_all_path(node, before_nodes, paths):

"""獲取路徑「」「

new_str = copy.deepcopy(before_nodes)

if node.left is none and node.right is none:

return paths

if node.left:

get_all_path(node.left, before_nodes, paths)

if node.right:

get_all_path(node.right, new_str, paths)

return paths

def binary_tree_path():

before_nodes =

paths =

get_all_path(tree.root, before_nodes, paths)

return paths

if __name__ == "__main__":

paths = binary_tree_path()

print("paths: ", paths)

二叉樹的所有路徑

一 問題描述 給一棵二叉樹,找出從根節點到葉子節點的所有路徑。樣例 給出下面這棵二叉樹 1 2 3 5 所有根到葉子的路徑為 1 2 5 1 3 二 解題思路 運用遞迴的思想查詢二叉樹的所有路徑,定義乙個向量用來儲存路徑,然後運用前序遍歷二叉樹,返回查詢的的路徑,在庫檔案string中,to str...

二叉樹的所有路徑

描述 給一棵二叉樹,找出從根節點到葉子節點的所有路徑。樣例 給出下面這棵二叉樹 1 2 3 5 所有根到葉子的路徑為 1 2 5 1 3 解題思路 要找到二叉樹的所有路徑,就相當於從根節點出發一直到葉子節點。我們可以在遍歷的基礎之上完成這項操作,但是又有所不同。首先從根節點出發,先遍歷它的左子樹,直...

二叉樹的所有路徑

問題描述 給一棵二叉樹,找出從根節點到葉子節點的所有路徑。樣例 給出下面這棵二叉樹 1 2 3 5所有根到葉子的路徑為 1 2 5 1 3 解題思路 若二叉樹不為空,將節點新增到向量中,左右子樹進行遞迴,通過函式呼叫然後輸出。definition of treenode class treenode...