199. 二叉樹的右檢視-二叉樹,dfs,從右往左遍歷-中等難度
阿新 • • 發佈:2020-07-05
問題描述
給定一棵二叉樹,想象自己站在它的右側,按照從頂部到底部的順序,返回從右側所能看到的節點值。
示例:
輸入:[1,2,3,null,5,null,4]
輸出:[1, 3, 4]
解釋:
1 <---
/ \
2 3 <---
\ \
5 4 <---
來源:力扣(LeetCode)
連結:https://leetcode-cn.com/problems/binary-tree-right-side-view
解答
# Definition for a binary tree node. # class TreeNode(object):# def __init__(self, x): # self.val = x # self.left = None # self.right = None ''' 不同於往常的dfs,這次我們從右邊開始遍歷二叉樹。 ''' class Solution(object): def rightSideView(self, root): if root == None: return [] now = [0,0] result = [root.val]def dfs(root): if root.left == None and root.right == None: return if root.right != None: now[0] += 1 if now[0] >= now[1]+1: now[1] += 1 result.append(root.right.val) dfs(root.right) now[0]-= 1 if root.left != None: now[0] += 1 if now[0] >= now[1]+1: now[1] += 1 result.append(root.left.val) dfs(root.left) now[0] -= 1 dfs(root) return result