关于二叉树递归的几种要点

二叉树递归系列文章目录

提示:晕递归,递进入一看,发现是自己


提示:写完文章后,目录可以自动生成,如何生成可参考右边的帮助文档


1.前序,中序,后序遍历

在这里插入图片描述

2.递归中的局部变量,传递的参数,全局变量

2.1 递归的理解

递归算法通常意味着对每个节点进行相同操作,如果该节点有子节点,则同样的操作也会应用到其左子节点右子节点上。如果没有子节点,直接返回。

递归函数通常有两个部分:基本情况(base case)和递归情况(recursive case)。基本情况是递归停止的条件,而递归情况是函数调用自己来解决问题的一部分。
基本情况:一定有一个root为NULL的的情况,直接返回
基本情况是对每一个节点都操作的,需要对任意节点都需要满足的条件
可能还有一层处理问题的基本情况,比如找节点,找深度,找到了直接返回。
没找到就继续向左右子树查找。
如果是返回最深层的节点个数,

2.2 计数size(传引用的方式)

2.3 深度(参数+1)

2.4 preparent(上一层的父节点) (传参)

3.题型类别?

3.1 计数型(size和深度)可以用分治法和计数法

3.2 查找型

左边没找到去右边找。

bool findValue(TreeNode* root, int value) {
    if (root == nullptr) return false;
    if (root->val == value) return true;
    return findValue(root->left, value) || findValue(root->right, value);
}

返回指定深度的节点个数

//理解没进入下一层,k-1,初始时k=3,第三层
//进入k=2 第二层
//k=1,找到这一层的一个节点,返回1,
int TreeKLevel(BTNode* root, int k)
{
	assert(k > 0);

	if (root == NULL)
		return 0;
	if (k == 1)
		return 1;
	return TreeKLevel(root->left, k - 1) + TreeKLevel(root->right, k - 1);
}

在这里插入图片描述

3.3

4.pandas是什么?

4.1

4.2

4.3

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值