1. 程式人生 > 實用技巧 >199. 二叉樹的右檢視-二叉樹,dfs,從右往左遍歷-中等難度

199. 二叉樹的右檢視-二叉樹,dfs,從右往左遍歷-中等難度

問題描述

給定一棵二叉樹,想象自己站在它的右側,按照從頂部到底部的順序,返回從右側所能看到的節點值。

示例:

輸入:[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