AgainUnderstand_94. Binary Tree Inorder Traversal_路漫漫远修兮

思路一:

class Solution:
    def inorderTraversal(self, root: TreeNode) -> List[int]:
        res=[]
        self.centertrave(root,res)
        return res
    def centertrave(self,root,res):
        if root:
            self.centertrave(root.left,res)#元素为空会退出来,并返回中间res
            res.append(root.val)
            print(res)
            self.centertrave(root.right,res)

 

图解代码运行过程:

 

思路二:

class Solution:
    def inorderTraversal(self, root: TreeNode) -> List[int]:
        res=[]
        self.centertrave(root,res)
        return res
    def centertrave(self,root,res):
        if root:
            self.centertrave(root.left,res)#元素为空会退出来,并返回中间res
            res.append(root.val)
            print(res)
            self.centertrave(root.right,res)

 

图解代码运行过程:

 

思路三:

#思路三与思路二结点遍历流程差不多,但是操作上略有不同
class Solution(object):
    def inorderTraversal(self, root):
        res, stack = [], []
        while stack or root:
            if root:
                stack.append(root)
                root = root.left#一直遍历到左子树的根结点
            else:
                node = stack.pop()#元素不存在,已经放过结点了
                res.append(node.val)
                root = node.right#遍历右子树
        return res

 

 

座右铭:站在别人的思想上,看见自己的不足,传播错误的经验,愿君不重蹈覆辙。

 

由于受限于本人经验,难免不足,如有建议,欢迎留言交流。

 

说明:

1.上面的图解步骤是本人在脑海中演算的,与当时的思考情况,仅仅作为理解的参考。

2.箭头代表了运行方向,数字代表了运行顺序。

3.之所以做这个,是因为本人对于二叉树的理解只能停留在“表面理解上”,对于里面究竟是怎么遍历的不清楚,所以就以题目给的例子,做了图解运行过程。

4.如果对您有帮助,请点赞,您的鼓励是本人前进的最好动力。

5.这里由于是对以前本人不理解代码的重新理解,所以省略了很多内容说明,详情请见本人博客链接。https://blog.csdn.net/qq_41827968/article/details/89458655

 

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值