牛客题霸 [判断二叉树是否对称] C++题解/答案
生活随笔
收集整理的這篇文章主要介紹了
牛客题霸 [判断二叉树是否对称] C++题解/答案
小編覺得挺不錯的,現在分享給大家,幫大家做個參考.
[牛客題霸 [判斷二叉樹是否對稱] C++題解/答案](https://www.nowcoder.com/practice/1b0b7f371eae4204bc4a7570c84c2de1?tpId=117&&tqId=34937&rp=1&ru=/ta/job-code-high&qru=/ta/job-code-high/question-ranking)
題目描述
給定一棵二叉樹,判斷琪是否是自身的鏡像(即:是否對稱)
例如:下面這棵二叉樹是對稱的
1
/
2 2
/ \ /
3 4 4 3
下面這棵二叉樹不對稱。
1
/
2 2
\
3 3
備注:
希望你可以用遞歸和迭代兩種方法解決這個問題
題解:
遞歸法:
自定義一個判斷函數,來不斷遞歸左右兩邊子樹的對稱子樹是否相等
也就是左子樹的左邊和右子樹的右邊比較
注:空子樹也是對稱的
這個思路比較簡單
迭代法:
用棧來存根的左右兩邊子樹,然后用while不斷彈出元素,比較,再壓入新元素
(迭代法的代碼就略了)
代碼:
/*** struct TreeNode {* int val;* struct TreeNode *left;* struct TreeNode *right;* };*/class Solution { public:/*** * @param root TreeNode類 * @return bool布爾型*/bool isEqual(TreeNode* node1,TreeNode* node2){if(node1==NULL&&node2==NULL){return true;}if(node1==NULL||node2==NULL){return false;}if(node1->val!=node2->val){return false;}return isEqual(node1->left,node2->right)&&isEqual(node1->right,node2->left);}bool isSymmetric(TreeNode* root) {// write code hereif(root==NULL)return 1;// if(!root->left&&!root->left)return root->val;return isEqual(root->left, root->right);} };總結
以上是生活随笔為你收集整理的牛客题霸 [判断二叉树是否对称] C++题解/答案的全部內容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: 说说godaddy
- 下一篇: 牛客题霸 [连续子数组的最大和] C++