递归是处理树形结构的重要方法。本文将介绍四种基于递归的二叉树问题,涵盖单值检测、相同性判断、子树匹配及对称性验证。
一、单值二叉树
1. 目标特征描述:什么单值二叉树
2. 目标实现示例
3. 算法思路
先对简单二叉树进行算法推理,再推广到整体。

递归规则:先递进再返回。 递进:首先从根节点 root 开始,左子树如果存在先对左子树匹配判断:若二者数值不相等,就返回 false,反之继续对右子树进行判断:二者数值不相等,返回 false。当然,根节点为空返回 true。推广到整体,就遍历左右子树判断。 返回:整个二叉树已经递进判断完毕,要对函数从最后开始返回:看图示,第 2 节点的左右子节点(&&的和关系)为空,那么都返回 true,代表这个子树是单值的。右子树第 3 节点也是单值的。那么根节点的两个子树就都返回 true(&&的和关系),代表整体是单值二叉树。
3.1 具体代码实现
/**
* Definition for a binary tree node.
* struct TreeNode {
* int val;
* struct TreeNode *left;
* struct TreeNode *right;
* };
*/
bool isUnivalTree(struct TreeNode* root) {
// 首先判断树是否为空
if (root == NULL) {
return true;
}
(root->left && root->val != root->left->val) {
;
}
(root->right && root->val != root->right->val) {
;
}
isUnivalTree(root->left) && isUnivalTree(root->right);
}













