IT数码 购物 网址 头条 软件 日历 阅读 图书馆
TxT小说阅读器
↓语音阅读,小说下载,古典文学↓
图片批量下载器
↓批量下载图片,美女图库↓
图片自动播放器
↓图片自动播放器↓
一键清除垃圾
↓轻轻一点,清除系统垃圾↓
开发: C++知识库 Java知识库 JavaScript Python PHP知识库 人工智能 区块链 大数据 移动开发 嵌入式 开发工具 数据结构与算法 开发测试 游戏开发 网络协议 系统运维
教程: HTML教程 CSS教程 JavaScript教程 Go语言教程 JQuery教程 VUE教程 VUE3教程 Bootstrap教程 SQL数据库教程 C语言教程 C++教程 Java教程 Python教程 Python3教程 C#教程
数码: 电脑 笔记本 显卡 显示器 固态硬盘 硬盘 耳机 手机 iphone vivo oppo 小米 华为 单反 装机 图拉丁
 
   -> 数据结构与算法 -> 【专题四】求二叉树深度的递归与非递归写法 -> 正文阅读

[数据结构与算法]【专题四】求二叉树深度的递归与非递归写法

//求二叉树深度  递归写法
int deep1(BTNode *T)
{
	if(T==NULL)
		return 0;
	int lhight = deep1(T->lchild)+1;//左子树高度
	int rhight = deep1(T->rchild)+1;//右子树高度
	return lhight>rhight?lhight:rhight; //返回最大的高度	
} 

//求二叉树深度  非递归写法  
/**
算法思想:设置一个level指针指向当前遍历的层数,
    每次遍历到当前层最右边的一个结点后,就将level指针+1,即开始遍历下一层。
 	遍历完所有结点后level的大小就该树的高度。 
**/
int deep2(BTNode *T)
{	 
	if(T==NULL)
		return 0;
	int level,rear,front,last;//指向当前遍历到的层数	
	rear = front = -1;
	last = level = 0;  //last表示当前遍历所在层的最右结点在队列中的位置。 
	/**
	初始时rear和front为0,而last为0的原因,是因为初始时根结点入队,且数组队列是从下标为0开始存数据的,que[0]中存储的是第一层的最右边结点。
		如果初始时,rear = front = 0;last=1,也是可以的。这表示从下标为1开始存数据,que[1]存储的是第一层的最右边的结点 
	*/ 
	BTNode *que[maxSize],*q;
	que[++rear] = T;//根结点先入队
	//开始层序遍历所有结点 
	while(front<rear) //如果队列不为空,即结点没被遍历完就一直循环遍历 
	{
		q = que[++front]; //队首元素出队

		if(q->lchild!=NULL)//该元素有左孩子则将左孩子入队 
			que[++rear] = q->lchild; 
			
		if(q->rchild!=NULL)//该元素有右孩子则将左孩子入队 
			que[++rear] = q->rchild; 
			
		if(front == last)  //如果遍历到了该层的最右结点,则处理level指针
		{
			last = rear;//将last指向下一层的最右边结点,而执行完前面的孩子入队操作后,rear指向的就是队尾,所以将rear赋给last 
			++level;//将level指向下一层 
		} 
	} 
	return level;
}
  数据结构与算法 最新文章
【力扣106】 从中序与后续遍历序列构造二叉
leetcode 322 零钱兑换
哈希的应用:海量数据处理
动态规划|最短Hamilton路径
华为机试_HJ41 称砝码【中等】【menset】【
【C与数据结构】——寒假提高每日练习Day1
基础算法——堆排序
2023王道数据结构线性表--单链表课后习题部
LeetCode 之 反转链表的一部分
【题解】lintcode必刷50题<有效的括号序列
上一篇文章      下一篇文章      查看所有文章
加:2021-09-09 12:01:51  更:2021-09-09 12:03:10 
 
开发: C++知识库 Java知识库 JavaScript Python PHP知识库 人工智能 区块链 大数据 移动开发 嵌入式 开发工具 数据结构与算法 开发测试 游戏开发 网络协议 系统运维
教程: HTML教程 CSS教程 JavaScript教程 Go语言教程 JQuery教程 VUE教程 VUE3教程 Bootstrap教程 SQL数据库教程 C语言教程 C++教程 Java教程 Python教程 Python3教程 C#教程
数码: 电脑 笔记本 显卡 显示器 固态硬盘 硬盘 耳机 手机 iphone vivo oppo 小米 华为 单反 装机 图拉丁

360图书馆 购物 三丰科技 阅读网 日历 万年历 2024年11日历 -2024/11/26 1:45:51-

图片自动播放器
↓图片自动播放器↓
TxT小说阅读器
↓语音阅读,小说下载,古典文学↓
一键清除垃圾
↓轻轻一点,清除系统垃圾↓
图片批量下载器
↓批量下载图片,美女图库↓
  网站联系: qq:121756557 email:121756557@qq.com  IT数码