介绍
小编给大家分享一下使用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)<强>深度优先强>
深度优先有三种算法:前序遍历,中序遍历,后序遍历
先序遍历在先序遍历中,我们先访问根节点,然后递归使用先序遍历访问左子树,再递归使用先序遍历访问右子树
引用>根节点→左子树,右子树
, #实现,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实现树的深度优先遍历与广度优先遍历的案例