目录
单值二叉树
思路
左子树和跟比看是否相同,右子树和跟比看是否相同 一直递归下去
bool isUnivalTree(struct TreeNode* root){
if(root == NULL)
return true;
//注意root->left!= NULL 否者会出现NULL访问val
if(root->left && root->val != root->left->val)
return false;
if(root->right && root->val != root->right->val)
return false;
//左右子树递归时要用 && 返回值要么为1(true),要么为假(0);
return isUnivalTree(root->left) && isUnivalTree(root->right);
}
二叉树最大深度
思路:
任何一颗二叉数都可以看作,根+左子树+右子树 所以找出左右子树较大深度的那个+1就是其深度
实现代码
int maxDepth(struct TreeNode* root){
//没有节点,既深度0
if(root == NULL)
return 0;
//先保存一下左右子树 再用三目操作符
//直接递归的话递归的次数会变得巨大
int lefttree = maxDepth(root->left);
int righttree = maxDepth(root->right);
//左右子树相比 较大的那个+1
return lefttree > righttree ? lefttree+1:righttree+1;
}
图解代码
建议对递归不是很了解的hxd多多画图, 递归这一类的题画图能更好的理解