劍指offer66題--Java實現,c++實現和python實現 18.二叉樹的映象
阿新 • • 發佈:2018-12-29
題目描述
操作給定的二叉樹,將其變換為源二叉樹的映象。
輸入描述:
二叉樹的映象定義:源二叉樹 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 *pRoot) { if (pRoot == nullptr) return; TreeNode *tp = pRoot->left; pRoot->left = pRoot->right; pRoot->right = tp; Mirror(pRoot->left); Mirror(pRoot->right); } };
Java
/** public class TreeNode { int val = 0; TreeNode left = null; TreeNode right = null; public TreeNode(int val) { this.val = val; } } */ public class Solution { public void Mirror(TreeNode root) { TreeNode next=null; if(root==null) return; next=root.left; root.left=root.right; root.right=next; if(root.left!=null){ Mirror(root.left); } if(root.right!=null){ Mirror(root.right); } } }
python
# -*- 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 root is None: return temp = root.left root.left = root.right root.right = temp self.Mirror(root.left) self.Mirror(root.right) return root