学习这部分还是要多画图,多思考
101.对称二叉树
题目
给你一个二叉树的根节点 root , 检查它是否轴对称。
题目链接
力扣(LeetCode)官网 - 全球极客挚爱的技术成长平台
文字 和 画图 分析
明确结束条件和继续递归条件
判断是否对称,我们一定是拿左子树和右子树进行对比,(这里的根节点反而没有那么重要)
如下图,这是遍历思路
图1:
图2:
从图我们可以知道:
结束条件有以下几种情况:
- 当左子树的值不等于右子树的值,返回 false
- 当左子树和右子树都为空 ,返回 true (如图一3,4号)
- 当左子树和右子树只有一个为空 ,返回 false (如图二2号)
(结束条件有先后顺序,为了防止是空树现象,一定要先验证这个)
从图中可以明白,左子树和右子树一定要同时进行比较,用递归的话参数一定是两个(就是左子树和右子树的节点)
(这里leetcode给的参数只有一个,所以我们得创建一个函数,用它帮我们返回真假)
代码
bool _isSymmetric(struct TreeNode* Left,struct TreeNode* Right)
{if(Left == NULL && Right == NULL){return true;}if(Left == NULL || Right == NULL){return false;}if(Left->val != Right->val){return false;}return _isSymmetric(Left->left,Right->right) && _isSymmetric(Left->right,Right->left);}
bool isSymmetric(struct TreeNode* root)
{return _isSymmetric(root->left,root->right) ;
}