(剑指Offer)面试题19:二叉树的镜像
生活随笔
收集整理的這篇文章主要介紹了
(剑指Offer)面试题19:二叉树的镜像
小編覺得挺不錯的,現在分享給大家,幫大家做個參考.
題目:
操作給定的二叉樹,將其變換為源二叉樹的鏡像。?
二叉樹的定義如下:
struct TreeNode{int val;TreeNode* left;TreeNode* right; };輸入描述:
二叉樹的鏡像定義:源二叉樹 8/ \6 10/ \ / \5 7 9 11鏡像二叉樹8/ \10 6/ \ / \11 9 7 5思路:
觀察上面兩個二叉樹,很容易就可以得出下面求一棵樹鏡像的過程:
先序遍歷這棵樹的每個結點,如果遍歷到的結點有子結點,則交換它的兩個子結點。當交換完所有非葉子結點的左右子結點之后,就得到了樹的鏡像。
代碼:
struct TreeNode{int val;TreeNode* left;TreeNode* right; };void Mirror(TreeNode *pRoot){if(pRoot==NULL)return;if(pRoot->left==NULL && pRoot->right==NULL)return;TreeNode* tmp=pRoot->left;pRoot->left=pRoot->right;pRoot->right=tmp;if(pRoot->left)Mirror(pRoot->left);if(pRoot->right)Mirror(pRoot->right); }在線測試OJ:
http://www.nowcoder.com/books/coding-interviews/564f4c26aa584921bc75623e48ca3011?rp=1
AC代碼:
class Solution { public:void Mirror(TreeNode *pRoot){if(pRoot==NULL)return;if(pRoot->left==NULL && pRoot->right==NULL)return;TreeNode* tmp=pRoot->left;pRoot->left=pRoot->right;pRoot->right=tmp;if(pRoot->left)Mirror(pRoot->left);if(pRoot->right)Mirror(pRoot->right);} };轉載于:https://www.cnblogs.com/AndyJee/p/4649164.html
總結
以上是生活随笔為你收集整理的(剑指Offer)面试题19:二叉树的镜像的全部內容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: 124 Binary Tree Maxi
- 下一篇: 15-07-15 数据库基础