1. 程式人生 > >劍指offer 19. 二叉樹的映象

劍指offer 19. 二叉樹的映象

題目描述

操作給定的二叉樹,將其變換為源二叉樹的映象。

輸入描述:

二叉樹的映象定義:源二叉樹 
    	    8
    	   /  \
    	  6   10
    	 / \  / \
    	5  7 9 11
    	映象二叉樹
    	    8
    	   /  \
    	  10   6
    	 / \  / \
    	11 9 7  5

思路:

前序遍歷,每次交換節點的左右子樹;即必須先交換節點的左右子樹後,才能繼續遍歷。

參考答案:

# -*- coding:utf-8 -*-
# class TreeNode:
#     def __init__(self, x):
# self.val = x # self.left = None # self.right = None class Solution: # 返回映象樹的根節點 def Mirror(self, root): # write code here if not root: return root.left, root.right = root.right, root.left self.Mirror(root.left) self.
Mirror(root.right)

C++ Version:

/*
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 *pRoot) {
        if (pRoot == NULL){
            return;
        }
        TreeNode *
node = pRoot->left; pRoot->left = pRoot->right; pRoot->right = node; Mirror(pRoot->left); Mirror(pRoot->right); } };

Note

  • 注意運用這種遞迴思路!