难度:中等
题目描述:
思路总结:终于开始做树的题了,数组和字符串的题虽然还不是很熟,但是已经做得快吐了,有了新的数据结构,会更有意思点。这题没啥好说的,递归,迭代就完了,教科书上的基本知识。二叉树的三种遍历方式
题解一:(递归)
# Definition for a binary tree node.
# class TreeNode:
# def __init__(self, x):
# self.val = x
# self.left = None
# self.right = None
class Solution:
def __init__(self):
self.res = []
def preorderTraversal(self, root: TreeNode) -> List[int]:
if root == None:return []
self.res.append(root.val)
if root.left != None:
self.preorderTraversal(root.left)
if root.right != None:
self.preorderTraversal(root.right)
return self.res
题解一结果:
题解二:(迭代)
# Definition for a binary tree node.
# class TreeNode:
# def __init__(self, x):
# self.val = x
# self.left = None
# self.right = None
class Solution:
def preorderTraversal(self, root: TreeNode) -> List[int]:
#迭代算法,使用栈
if root == None:return []
res = []
stack =[root]
while stack != []:
cur = stack.pop()
res.append(cur.val)
if cur.right != None:
stack.append(cur.right)
if cur.left != None:
stack.append(cur.left)
return res
题解二结果: