剑指offer:18、二叉树的镜像

题目描述

操作给定的二叉树,将其变换为源二叉树的镜像。

输入描述:

二叉树的镜像定义:源二叉树 
    	    8
    	   /  \
    	  6   10
    	 / \  / \
    	5  7 9 11
    	镜像二叉树
    	    8
    	   /  \
    	  10   6
    	 / \  / \
    	11 9 7  5

对于一个节点而言,首先创建一个临时结点,用于存储左结点的地址,将右结点地址赋给左结点,再将临时结点赋值给右结点,如此递归下去即可。

c++代码:

/*
struct TreeNode {
	int val;
	struct TreeNode *left;
	struct TreeNode *right;
	TreeNode(int x) :
			val(x), left(NULL), right(NULL) {
	}
};*/
class Solution {
public:
    void Mirror(TreeNode *p) {
      if(p!=NULL)
      {
          TreeNode *temp;
          temp=p->left;
          p->left=p->right;
          p->right=temp;
          Mirror(p->left);
          Mirror(p->right);
      }
          
        
       

    }
};

python:

# -*- coding:utf-8 -*-
# class TreeNode:
#     def __init__(self, x):
#         self.val = x
#         self.left = None
#         self.right = None
class Solution:
    # 返回镜像树的根节点
    def swap(self,root):
        temp=root.left
        root.left=root.right
        root.right=temp
        
    def Mirror(self, root):
        # write code here
        if root==None:
            return root
        else:
            self.swap(root)
            self.Mirror(root.left)
            self.Mirror(root.right)
            return root
            
        
                
        

猜你喜欢

转载自blog.csdn.net/qq_31442743/article/details/81539525