LeetCode—Python—144.ツリーの前順序ループ(非再帰的実装)
953 ワード
一、テーマの説明
前中後順遍歴(144):https://leetcode.com/problems/binary-tree-preorder-traversal/description/
ツリーを2つ与え、その前の順序を返します.
例:
ステップアップ:再帰アルゴリズムは簡単ですが、反復アルゴリズムでできますか?
二、コードの詳細
stackの「先進後出」を利用
前中後順遍歴(144):https://leetcode.com/problems/binary-tree-preorder-traversal/description/
ツリーを2つ与え、その前の順序を返します.
例:
: [1,null,2,3]
1
\
2
/
3
: [1,2,3]
ステップアップ:再帰アルゴリズムは簡単ですが、反復アルゴリズムでできますか?
二、コードの詳細
stackの「先進後出」を利用
# Definition for a binary tree node.
# class TreeNode(object):
# def __init__(self, x):
# self.val = x
# self.left = None
# self.right = None
class Solution(object):
def preorderTraversal(self, root):
"""
:type root: TreeNode
:rtype: List[int]
"""
res = []
stack = [root]
while stack:
node = stack.pop()
if node:
res.append(node.val)
stack.append(node.right)
stack.append(node.left)
return res