二叉树的基本知识点
构建二叉树节点
class TreeNode():#二叉树节点
def __init__(self,val,lchild=None,rchild=None):
self.val=val #二叉树的节点值
self.lchild=lchild #左孩子
self.rchild=rchild #右孩子
1.前中后序递归查找只是
result.append(root.val) #3.确定单层递归的逻辑,怎么调用自己 中
travers(root.left) #左
travers(root.right) #右
这三行顺序调换
2.确定递归参数root节点
确定终止条件root为空
确定递归内容调用左右节点时
前序递归查找
# Definition for a binary tree node.
# 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: Optional[TreeNode]) -> List[int]:
#递归怎么写?
#1.确定递归参数
#2.确定递归终止条件
#3.确定单层递归的逻辑,怎么调用自己
#需要新建一个函数 把result放在函数外面,不然result会被更新
result=[]
def travers(root): #1.确定递归参数
if not root: #2.确定递归终止条件
return
result.append(root.val) #3.确定单层递归的逻辑,怎么调用自己 中
travers(root.left) #左
travers(root.right) #右
travers(root)
return result
中序递归查找
# Definition for a binary tree node.
# class TreeNode:
# def __init__(self, val=0, left=None, right=None):
# self.val = val
# self.left = left
# self.right = right
class Solution:
def inorderTraversal(self, root: Optional[TreeNode]) -> List[int]:
#递归怎么写?
#1.确定递归参数
#2.确定递归终止条件
#3.确定单层递归的逻辑,怎么调用自己
#需要新建一个函数 把result放在函数外面,不然result会被更新
result=[]
def travers(root): #1.确定递归参数
if not root: #2.确定递归终止条件
return
travers(root.left) #左
result.append(root.val) #3.确定单层递归的逻辑,怎么调用自己 中
travers(root.right) #右
travers(root)
return result
后序递归查找
# Definition for a binary tree node.
# class TreeNode:
# def __init__(self, val=0, left=None, right=None):
# self.val = val
# self.left = left
# self.right = right
class Solution:
def postorderTraversal(self, root: Optional[TreeNode]) -> List[int]:
#递归怎么写?
#1.确定递归参数
#2.确定递归终止条件
#3.确定单层递归的逻辑,怎么调用自己
#需要新建一个函数 把result放在函数外面,不然result会被更新
result=[]
def travers(root): #1.确定递归参数
if not root: #2.确定递归终止条件
return
travers(root.left) #左
travers(root.right) #右
result.append(root.val) #3.确定单层递归的逻辑,怎么调用自己 中
travers(root)
return result