牛客題霸 [二叉樹中是否存在節點和為指定值的路徑] C++題解/答案
牛客題霸 [二叉樹中是否存在節點和為指定值的路徑] C++題解/答案
題目描述
給定一棵二叉樹,判斷琪是否是自身的映象(即:是否對稱)
例如:下面這棵二叉樹是對稱的
1
/
2 2
/ \ /
3 4 4 3
下面這棵二叉樹不對稱。
1
/
2 2
\
3 3
備註:
希望你可以用遞迴和迭代兩種方法解決這個問題
題解:
遞迴法:
自定義一個判斷函式,來不斷遞迴左右兩邊子樹的對稱子樹是否相等
也就是左子樹的左邊和右子樹的右邊比較
isEqual(node1->left,node2->right)&&isEqual(node1->right,node2->left);
注:空子樹也是對稱的
這個思路比較簡單
迭代法:
用棧來存根的左右兩邊子樹,然後用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 here
if(root==NULL)return 1;
// if(!root->left&&!root->left)return root->val;
return isEqual(root->left, root->right);
}
};
相關文章
- 牛客題霸 [括號序列] C++題解/答案C++
- 牛客題霸--求路徑
- 牛客題霸 [最長公共子串]C++題解/答案C++
- 刷題系類 - Python判斷二叉樹是否存在一條路徑滿足和值要求Python二叉樹
- 面試題34:二叉樹中和為某一值的路徑面試題二叉樹
- 劍指 Offer 34. 二叉樹中和為某一值的路徑(java解題)二叉樹Java
- leetcode------給定一個二叉樹和一個值sum,判斷是否有從根節點到葉子節點的節點值之和等於sum 的路徑,LeetCode二叉樹
- 【vue】在二叉樹中根據子節點找出父節點路徑Vue二叉樹
- LeetCode第 543 題:二叉樹的直徑(C++)LeetCode二叉樹C++
- 刷題系列 - 在二叉樹中查詢給出節點,並返回以該節點為根的樹二叉樹
- LeetCode題解(Offer26):判斷二叉樹A是否為二叉樹B的子樹(Python)LeetCode二叉樹Python
- 小A與尤拉路(牛客-樹的直徑)
- 刷題系列 - 在二叉樹中,為每個節點關聯其右相鄰節點二叉樹
- JZ-024-二叉樹中和為某一值的路徑二叉樹
- 二叉樹路徑總和二叉樹
- 遊戲是否存在價值問題?遊戲
- 牛客題霸NC132環形連結串列的約瑟夫問題Java題解Java
- 劍指 Offer 34. 二叉樹中和為某一值的路徑二叉樹
- 牛客題霸--連續子陣列的最大和陣列
- 【模板題】 543. 二叉樹的直徑二叉樹
- 牛客多校H題題解
- 到達二叉樹目標節點的完整路徑二叉樹
- 劍指offer(java實現)第4題“重建二叉樹”-牛客網Java二叉樹
- shell判斷系統路徑中是否存在空格
- 387,二叉樹中的最大路徑和二叉樹
- 劍指offer面試題12:矩陣中的路徑(Java版已在牛客網AC)面試題矩陣Java
- 牛客刷題回溯法之矩陣中的路徑 and 機器人的運動範圍矩陣機器人
- map判斷值是否存在需要注意的問題
- [1483. 樹節點的第 K 個祖先] 【路徑】
- Java中在二叉搜尋樹中查詢節點的父節點Java
- 【10.22 牛客普及(三)】 牛半仙的妹子gcd 題解GC
- (python版)《劍指Offer》JZ24:二叉樹中和為某一值的路徑Python二叉樹
- 判斷二叉樹是否為滿二叉樹二叉樹
- 124. 二叉樹中的最大路徑和二叉樹
- 牛客網--華為機試題
- 刷題系列 - 在給出二叉樹中兩個點,求出其最小共同父節點二叉樹
- 二叉樹路徑查詢二叉樹
- sh指令碼判斷路徑是否存在指令碼