class TreeNode:
def __init__(self,val = 0, left = None, right = None):
self.val = val
self.left = left
self.right = right
class Solution:
def preorder(self,root:TreeNode, res):
if root == None:
return
res.append(root.val)
self.preorder(root.left, res)
self.preorder(root.right, res)
def preorderTraversal(self,root:TreeNode):
res = []
self.preorder(root,res)
return res
treenode = TreeNode(val = 1)
treenode.right = TreeNode(val = 2)
treenode.right.left = TreeNode(val = 3)
a = Solution()
b = a.preorderTraversal(treenode)
print(b)
递归操作要点:首先要搞清楚递归一步一步是如何来的,其次要搞清楚树的前序遍历方法。
class TreeNode:
def __init__(self,val=0, left=None,right = None):
self.val = val
self.left = left
self.right = right
class Solution:
def preorderTraversal(self,root:TreeNode):
if not root:
return []
stack = [root]
res = []
while stack:
node = stack.pop()
res.append(node.val)
if node.right:
stack.append(node.right)
if node.left:
stack.append(node.left)
return res
treenode = TreeNode(val = 1)
treenode.right =TreeNode(val = 2)
treenode.right.left = TreeNode(val = 3)
a = Solution()
b = a.preorderTraversal(treenode)
print(b)
非递归操作要点:首先搞清楚递归如何一步一步进行的,其次搞清楚栈的运行原理,并且搞清楚二叉树的前序遍历操作