首页 > 编程知识 正文

二叉树后序遍历的非递归实现,二叉树中序遍历怎么看

时间:2023-05-06 10:50:27 阅读:34522 作者:3634

使用二叉树递归进行中序遍历很容易实现,但如果能用环路实现,则效率较高。 因为本人在磨练问题的时候发现了循环的写法,所以做笔记。

理论:一般的中序遍历代码为:

defBST(root ) 3360 if not root 3360 return else : BST ) root.left ) return root.val BST (root.right ) 3358www.Sina.Cina

defBST(root ) :堆栈=[ ] p=root RES=[ ] whileporstack : whilep : stack.append ) p=p.left#首先将左节点放在堆栈上

例题1 :

算法: # definitionforabinarytreenode.# class treenode : # def _ init _ _ (self, x 65: # self.val=x # self.left=none # self.right=noneclasssolution 3360 defisvalidbst (self,root 3360 trenode ) whilecurorstack 3360 while cur : stack.append (cur ) cur.leftcur=stack.pop ) ifp recur.val 3360 pre=cur.val 3360 pre

实现代码: # definitionforabinarytreenode.# class treenode : # def _ init _ (self, x ) : # self.val=x # self.left=none # self.right=noneclassolution 3360 definordersuccessor (self, root 3360 TT tion p : treenode (-treenode : cur=root stack=[ ] pre=nonewhilecurorstack 3360 while cur : stack.append )

版权声明:该文观点仅代表作者本人。处理文章:请发送邮件至 三1五14八八95#扣扣.com 举报,一经查实,本站将立刻删除。