二叉树的右视图

199. 二叉树的右视图

已解答

中等

相关标签

相关企业

给定一个二叉树的 根节点 root,想象自己站在它的右侧,按照从顶部到底部的顺序,返回从右侧所能看到的节点值。

# Definition for a binary tree node.

# class TreeNode(object):

#     def __init__(self, val=0, left=None, right=None):

#         self.val = val

#         self.left = left

#         self.right = right

class Solution(object):

    # def getList(self,root):

    #     if root == None:

    #         return []

    #     elif root.left == None and root.right == None:

    #         return [root.val]

    #     else:

    #         left = self.getList(root.left)

    #         right = self.getList(root.right)

    #         if left == [] :

    #             return [root.val]+right

    #         if right == []:

    #             return [root.val]+left

    #         if len(left)<len(right):

    #             return [root.val]+right

    #         else:

    #             left[:len(right)]=right

    #             return [root.val]+left

    def dfs(self,root,height):

        if root==None:

            return []

        else:

            if len(self.ans)<height:

                self.ans.append(root.val)

            self.dfs(root.right,height+1)

            self.dfs(root.left,height+1)


 

    def rightSideView(self, root):

        """

        :type root: Optional[TreeNode]

        :rtype: List[int]

        """

        # return self.getList(root)

        # 应该用深度优先搜索,你想想那个图就知道了只要每次记录depth即可

        self.ans=[]

        self.dfs(root,1)

        return self.ans

    这个利用到dfs,考虑dfs的遍历顺序,其实加上height就可以了

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值