天天看点

剑指offer18——二叉树的镜像1. 思路——分治2. 代码

剑指offer18——二叉树的镜像1. 思路——分治2. 代码

1. 思路——分治

剑指offer18——二叉树的镜像1. 思路——分治2. 代码
def postOrder(root):
    if root == None:
    	return None
    postOrder(root.left) // left child
    postOrder(root->right);// right child
    # process root,root参数的操作过程
           

2. 代码

分治的操作步骤

① 找出基线条件,这种条件必须尽可能简单(例如涉及数组的递归问题时,基线条件一般是数组为空或只包含一个元素)

② 不断缩小问题规模(使用递归),直到符合基线条件

本题中,我们要解决的是二叉树的镜像问题

# -*- coding:utf-8 -*-
# class TreeNode:
#     def __init__(self, x):
#         self.val = x
#         self.left = None
#         self.right = None
class Solution:
    # 1.要解决的问题:返回镜像树的根节点
    # 翻转二叉树的左右孩子,左右孩子进行相同的操作
    def traverse(self,pts):
        if pts == None:  # -----基线条件
            return None
        lval = self.traverse(pts.left) # -----递归条件,缩小了问题规模
        rval = self.traverse(pts.right)# -----递归条件,缩小了问题规模
        pts.left = rval
        pts.right = lval
        
        return pts
    def Mirror(self, root):
        # write code here
        if root == None:
            return None
        self.traverse(root)
           
剑指offer18——二叉树的镜像1. 思路——分治2. 代码