python

关注公众号 jb51net

关闭
首页 > 脚本专栏 > python > Python二叉树遍历

解决Python3中二叉树前序遍历的迭代问题

作者:amboke

二叉树是分层数据结构,其中每个父节点最多有 2 个子节点,在今天的文章中,我们将讨论一个在大量技术编码面试中出现的重要主题,对Python二叉树遍历相关知识感兴趣的朋友一起看看吧

Python3中二叉树前序遍历的迭代解决方案

A Binary Tree

二叉树是分层数据结构,其中每个父节点最多有 2 个子节点。在今天的文章中,我们将讨论一个在大量技术编码面试中出现的重要主题。

问题陈述 : 鉴于 二叉树,返回 其节点值的前序遍历 . 提供迭代解决方案而不是递归解决方案。

解决方案:

预购遍历 在二叉树中按以下顺序发生:

为了用迭代解决方案解决这个问题,我们必须实现 堆 数据结构。这是一种非线性数据结构,其中操作按 LIFO(后进先出)顺序执行。我们回答的方法很简单,如下所示:

作为这个过程的结果,将首先访问根值,然后访问左子树,最后访问右子树值。

需要注意的是,右孩子首先被推入堆栈,然后是左孩子。这是因为堆栈的 LIFO 特性。这样做将允许我们先访问左孩子,然后再访问右孩子。

说话很便宜,给我看代码:

 # 二叉树节点的定义 类树节点:  
 def __init__(self, val=0, left=None, right=None):  
 自我.val = val  
 self.left = 左  
 self.right = 对 类解决方案:  
 def preorderTraversal(self, root: Optional[TreeNode]) -> List[int]:  
 输出,节点堆栈 = [],[根]  
          
 而节点堆栈:  
 节点 = nodestack.pop()  
 if node: # preorder: root -> left -> right  
 output.append(node.val)  
 nodestack.append(node.right)  
 nodestack.append(node.left)  
 返回输出

如果这篇文章对您有帮助,请随意喜欢并订阅我的时事通讯,以获取更多 Python 中的 DSA 内容。

到此这篇关于Python3中二叉树前序遍历的迭代解决方案的文章就介绍到这了,更多相关Python二叉树遍历内容请搜索脚本之家以前的文章或继续浏览下面的相关文章希望大家以后多多支持脚本之家!

您可能感兴趣的文章:
阅读全文