binarytree二叉树节点BFS广度优先搜索遍历,递归,python

Posted zhangphil

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了binarytree二叉树节点BFS广度优先搜索遍历,递归,python相关的知识,希望对你有一定的参考价值。

binarytree二叉树节点BFS广度优先搜索遍历,递归,python

从左至右,逐层展开,递归实现。

import random

from binarytree import build


def app():
    data = []
    for i in range(10):
        data.append(i)
    random.shuffle(data)

    root = build(data)
    root.pprint(index=False, delimiter=',')

    visited = [root[0]]

    print('-----')
    my_bfs_travel(visited)
    print('广度遍历路径', bfs_path)


bfs_path = []


# 广度遍历,逐层遍历,从左至右,递归实现
def my_bfs_travel(visited):
    if len(visited) == 0:
        return

    node = visited[0]

    if node not in bfs_path:
        bfs_path.append(node)

    left_child = node.left
    right_child = node.right

    if left_child is not None:
        bfs_path.append(left_child)
        visited.append(left_child)
    if right_child is not None:
        bfs_path.append(right_child)
        visited.append(right_child)

    # 弹出首位元素
    visited.pop(0)

    my_bfs_travel(visited)


if __name__ == '__main__':
    app()

输出:


        ____9__
       /       \\
    __5__       0
   /     \\     / \\
  2       6   3   7
 / \\     /
4   1   8

-----
广度遍历路径 [Node(9), Node(5), Node(0), Node(2), Node(6), Node(3), Node(7), Node(4), Node(1), Node(8)]

以上是关于binarytree二叉树节点BFS广度优先搜索遍历,递归,python的主要内容,如果未能解决你的问题,请参考以下文章

二叉搜索树BST广度优先搜索遍历BFS计算树高度,非递归,binarytree,python

BFS(广度优先搜索)

算法二叉树相关算法

binarytree二叉树节点DFS深度优先搜索遍历,递归,python

binarytree二叉树节点DFS深度优先搜索遍历,递归,python

DFS-深度优先搜索与BFS-广度优先搜索