C C++最新入门二叉树-一起来递归【下】,我在华为做C C++外包的真实经历

img
img

既有适合小白学习的零基础资料,也有适合3年以上经验的小伙伴深入学习提升的进阶课程,涵盖了95%以上C C++开发知识点,真正体系化!

由于文件比较多,这里只是将部分目录截图出来,全套包含大厂面经、学习笔记、源码讲义、实战项目、大纲路线、讲解视频,并且后续会持续更新

如果你需要这些资料,可以戳这里获取

这次的题目相比较上次可能会难度上升,尤其是后面两题,反正不会就试着画图

1. 对称二叉树

本题目来源于leetcode 101. 对称二叉树

1.1 题目描述

1.1.1 接口函数
/\*\*
 \* Definition for a binary tree node.
 \* struct TreeNode {
 \* int val;
 \* struct TreeNode \*left;
 \* struct TreeNode \*right;
 \* };
 \*/


bool isSymmetric(struct TreeNode\* root){

}

1.2 大致框架

1.2.1 思路与想法

注意按照题目的意思,只有镜像的才是对称的

image-20211129101055480

如何判断一对称二叉树?

如果root为空,那么是对称。如果不为空的话,当他的左子树与右子树对称时,他才完全对称

2.那么怎么知道左子树与右子树对不对称呢?如果左树的左孩子与右树的右孩子对称,左树的右孩子与右树的左孩子对称,那么这个左树和右树就对称。

1.2.2 具体步骤
  1. 注意还是要先判空
  2. 要不断地比较左树的左孩子和右树的右孩子,以及左树的右孩子,和右树的左孩子
  3. 在此同时我们利用一个函数,接收一个left和一个right,进入递归
  4. 和之前判断相同的树一样,判断三种情况之后继续递归,分别是双空,单空和值不相等

1.3 整体实现

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-&g
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值