title: LEETCODE-DAY14
date: 2024-03-06 16:03:41
tags:
今日内容:二叉树基本知识,三种遍历方式
144.二叉树的前序遍历、145.二叉树的后序遍历、94.二叉树的中序遍历
这里的顺序其实是看根节点的顺序
别忘了最基本的树如何定义
class TreeNode:
def __init__(self,val,left=None,right=None):
self.val=val
self.left=left
self.right=right
T1(Preorder)
class Solution:
def preorderTraversal(self, root: Optional[TreeNode]) -> List[int]:
res=list()
if self.val:
res.append(self.val)
res=res+preorderTraversal(self.left)
res=res+preorderTraversal(self.right)
return res
AttributeError: ‘Solution’ object has no attribute ‘val’
^^^^^^^^
if self.val:
def preorderTraversal(self, root: Optional[TreeNode]) -> List[int]:
res=list()
if root.val:
res.append(root.val)
res=res+preorderTraversal(root.left)
res=res+preorderTraversal(root.right)
return res
NameError: name ‘preorderTraversal’ is not defined
^^^^^^^^^^^^^^^^^
res=res+preorderTraversal(root.left)
def preorderTraversal(self, root: Optional[TreeNode]) -> List[int]:
res=list()
if root.val:
res.append(root.val)
res=res+self.preorderTraversal(root.left)
res=res+self.preorderTraversal(root.right)
return res
AttributeError: ‘NoneType’ object has no attribute ‘val’
^^^^^^^^
if root.val:
def preorderTraversal(self, root: Optional[TreeNode]) -> List[int]:
res=list()
if root:
res.append(root.val)
res=res+self.preorderTraversal(root.left)
res=res+self.preorderTraversal(root.right)
return res
也可写成
class Solution:
def preorderTraversal(self, root: Optional[TreeNode]) -> List[int]:
res=list()
if root:
left=+self.preorderTraversal(root.left)
right=+self.preorderTraversal(root.right)
return [root.val]+left+right
AttributeError: ‘NoneType’ object has no attribute ‘val’
^^^^^^^^
return [root.val]+left+right
class Solution:
def preorderTraversal(self, root: Optional[TreeNode]) -> List[int]:
res=list()
if not root:
return []
else:
left=self.preorderTraversal(root.left)
right=self.preorderTraversal(root.right)
return [root.val]+left+right
(Inorder)
class Solution:
def preorderTraversal(self, root: Optional[TreeNode]) -> List[int]:
res=list()
if not root:
return []
else:
left=self.preorderTraversal(root.left)
right=self.preorderTraversal(root.right)
return left+[root.val]+right
(Post order)
class Solution:
def preorderTraversal(self, root: Optional[TreeNode]) -> List[int]:
res=list()
if not root:
return []
else:
left=self.preorderTraversal(root.left)
right=self.preorderTraversal(root.right)
return left+right+[root.val]