leedcode 二叉树的中序遍历

自己写的递归:

复制代码
class Solution:
    def __init__(self):
        self.res_list=list()

    def inorderTraversal(self, root) :
        if root:
            if root==None:
                return
            else:
                self.inorderTraversal(root.left)
                self.res_list.append(root.val)
                self.inorderTraversal(root.right)
            return self.res_list
        else:
            return self.res_list
复制代码

gpt改进的递归:

复制代码
class Solution:
    def __init__(self):
        self.res_list = []

    def inorderTraversal(self, root):
        if root:
            self.inorderTraversal(root.left)
            self.res_list.append(root.val)
            self.inorderTraversal(root.right)
        return self.res_list
复制代码

 迭代:

复制代码
class Solution:
    def __init__(self):
        # 初始化一个实例变量 res 用于存储遍历结果
        self.res = list()

    def inorderTraversal(self, root: Optional[TreeNode]) -> List[int]:
        # 如果根节点为空,直接返回空的结果列表
        if not root:
            return self.res
        else:
            # 初始化一个栈,用于迭代遍历二叉树
            stack = []

        # 迭代的条件是当前节点不为空或者栈非空
        while root or stack:
            # 先将左子树入栈,一直遍历到最左下角的节点
            while root:
                stack.append(root)
                root = root.left

            # 弹出栈顶元素,即当前最左下角的节点
            cur = stack.pop()
            # 将该节点的值添加到结果列表中
            self.res.append(cur.val)

            # 转向右子树,继续中序遍历
            root = cur.right

        # 遍历完成后返回结果列表
        return self.res
复制代码

 

posted @   Junior_bond  阅读(2)  评论(0编辑  收藏  举报
相关博文:
阅读排行:
· winform 绘制太阳,地球,月球 运作规律
· AI与.NET技术实操系列(五):向量存储与相似性搜索在 .NET 中的实现
· 超详细:普通电脑也行Windows部署deepseek R1训练数据并当服务器共享给他人
· 【硬核科普】Trae如何「偷看」你的代码?零基础破解AI编程运行原理
· 上周热点回顾(3.3-3.9)
点击右上角即可分享
微信分享提示