1、什么是深度优先遍历? 实际上,深度优先遍历可以认为是上一个遍历,如下二叉树所示。
其深入扫描结果为1、2、4、8、9、5、3、6、7
2、解题思路1、采用递归方式进行遍历。
二、利用3358www.Sina.com/,根先入栈,再出栈,根右部树、左部树入栈,栈的http://www.com
3、编程实现classnode(:#节点类def_init_ ) (self ),data=-1 ) : self.data=dataself.left=none data )到: #树节点node=node(data ) if self.root.data==-1: #如果树为空,则在根节点中包含self.root=node else 3360 my QQ treenode=self.rootmyqueue.append (treenode ) while myQueue: #分层遍历现有节点treenode=myqueue.pop(0) )。 if not treenode.left : treenode.left=nodereturnelifnottreenode.right 3360 treenode.right=nodereturnelse 3360 my queue ) )自、 root ) : #递归实现深度优先遍历if root==none : return print (root.data ) self.DFS ) root.left (self.DFS ) root.right 基于堆栈数据结构的深度遍历if root==none : return stack=[ ] stack.append (root ) while stack : now _ node=stack.pop==none : stack.append (now _ node.left ) if_name_=='_main_':#主函数datas=[ 1,2,3,3, 9 ) tree=tree(#新树对象fordataindatas:tree.add ) #一个节点print (“递归实现基元遍历:”) tree,每个节点参与一个树