使用python实现树的深度优先遍历与广度优先遍历的案例

  介绍

小编给大家分享一下使用python实现树的深度优先遍历与广度优先遍历的案例,相信大部分人都还不怎么了解,因此分享这篇文章给大家参考一下,希望大家阅读完这篇文章后大有收获、下面让我们一起去了解一下吧!

<强>广度优先(层次遍历)

从树的根部开始,从上到下从左到右遍历整个树的节点

使用python实现树的深度优先遍历与广度优先遍历的案例

<强>数和二叉树的区别就是,二叉树只有左右两个节点

广度优先顺序:A - B - C - D - E - F - G - H -我

代码实现

def  breadth_travel(自我,,根):   ,,,“““利用队列实现树的层次遍历“““   ,,,if  root ==,没有:   ,,,,,回来   ,,,queue =, []   ,,,queue.append(根)   ,,,while 队列:   ,,,,,node =, queue.pop (0)   ,,,,,print  node.elem,   ,,,,,if  node.lchild  !=,没有:   ,,,,,,,queue.append (node.lchild)   ,,,,,if  node.rchild  !=,没有:   ,,,,,,,queue.append (node.rchild)

<强>深度优先

深度优先有三种算法:前序遍历,中序遍历,后序遍历

使用python实现树的深度优先遍历与广度优先遍历的案例

先序遍历在先序遍历中,我们先访问根节点,然后递归使用先序遍历访问左子树,再递归使用先序遍历访问右子树

根节点→左子树,右子树

, #实现,1   ,def 预订(自我,,根):   ,,,“““递归实现先序遍历,““   ,,,if  root ==,没有:   ,,,,,回来   ,,,print  root.elem   ,,,self.preorder (root.lchild)   ,,,self.preorder (root.rchild) , #实现,2   ,def  depth_tree (tree_node):   ,,if  tree_node  is  not 没有:   ,,,,print  (tree_node._data)   ,,,,if  tree_node._left  is  noe 没有:   ,,,,,,return  depth_tree (tree_node._left)   ,,,,if  tree_node._right  is  not 没有:   ,,,,,,return  depth_tree (tree_node._right)

中序遍历在中序遍历中,我们递归使用中序遍历访问左子树,然后访问根节点,最后再递归使用中序遍历访问右子树

左子树→根节点→右子树

def 有条不紊地进行(自我,,根):   ,,“““递归实现中序遍历,““   ,,if  root ==,没有:   ,,,,回来   ,,self.inorder (root.lchild)   ,,print  root.elem   ,,self.inorder (root.rchild)

后序遍历在后序遍历中,我们先递归使用后序遍历访问左子树和右子树,最后访问根节点

左子树,右子树→根节点

def 后缀次序(自我,,根):   ,,“““递归实现后续遍历“““   ,,if  root ==,没有:   ,,,,回来   ,,self.postorder (root.lchild)   ,,self.postorder (root.rchild)   ,,print 根。elem

以上是“使用python实现树的深度优先遍历与广度优先遍历的案例”这篇文章的所有内容,感谢各位的阅读!相信大家都有了一定的了解,希望分享的内容对大家有所帮助,如果还想学习更多知识,欢迎关注行业资讯频道!

使用python实现树的深度优先遍历与广度优先遍历的案例