1. 程式人生 > >【LeetCode & 劍指offer刷題】樹題6:28 對稱二叉樹(101. Symmetric Tree)

【LeetCode & 劍指offer刷題】樹題6:28 對稱二叉樹(101. Symmetric Tree)

【LeetCode & 劍指offer 刷題筆記】目錄(持續更新中...)

101. Symmetric Tree

 

 

  /**  * Definition for a binary tree node.  * struct TreeNode {  *     int val;  *     TreeNode *left;
 *     TreeNode *right;  *     TreeNode(int x) : val(x), left(NULL), right(NULL) {}  * };  */ //問題: 判斷某二叉樹是否為對稱二叉樹 ,聯絡問題: 變換二叉樹為原來的映象 //方法一:遞迴法 class Solution {
public :     bool isSymmetric ( TreeNode * root )     {         return isMirror ( root , root ); //從根結點開始         
}         bool isMirror ( TreeNode * t1 , TreeNode * t2 ) //判斷兩個樹是否為映象關係     {                 //三個遞迴出口         if ( t1 == NULL && t2 == NULL ) return true ;    //兩結點同時為空時為true,只有一個為空時為false,均為非空時,比較當前結點值以及左右子樹是否為對稱的         else if ( t1 == NULL || t2 == NULL ) return false ;         //當前結點值相等,且左結點的左子樹和右結點的右子樹對稱,左結點的右子樹和右結點的左子樹對稱         return (t1->val == t2->val) && isMirror(t1->left,t2->right) && isMirror(t1->right,t2->left);     } };