码迷,mamicode.com
首页 > 其他好文 > 详细

二叉树遍历:考虑空节点

时间:2020-05-31 13:09:56      阅读:116      评论:0      收藏:0      [点我收藏+]

标签:global   nbsp   树遍历   它的   oba   前序遍历   ret   一个   sel   

思路:

  通常我们进行二叉树的遍历(前序遍历、中序遍历和后序遍历)时,不考虑空节点。但有时需要我们将空节点也放入遍历序列中。

  由于考虑了空节点,不能再用是否为空作为递归结束的条件。容易想到,只要一个节点非空,并且它的左右叶节点不同时为空,则其左右叶节点均要被遍历。这样我们就得到了考虑空节点的遍历。

  以中序遍历为例:
class TreeNode:
    def __init__(self, x):
        self.val = x
        self.left = None
        self.right = None

class Solution:
    def traval(self, root):
        if not root:
            return None
        global res
        res = []

        def mid_order(root):
            if root and (root.left or root.right):
                mid_order(root.left)
                res.append(root)
                mid_order(root.right)
            else:
                res.append(root)

        mid_order(root)

        return res

 

 

二叉树遍历:考虑空节点

标签:global   nbsp   树遍历   它的   oba   前序遍历   ret   一个   sel   

原文地址:https://www.cnblogs.com/r1-12king/p/12996814.html

(0)
(0)
   
举报
评论 一句话评论(0
登录后才能评论!
© 2014 mamicode.com 版权所有  联系我们:gaon5@hotmail.com
迷上了代码!