数据结构 | 层次遍历&求二叉树的高度(递归&非递归)

层次遍历

#include<iostream>
#include<queue>
using namespace std;
struct BTNode
{
	int data;
	BTNode* left, * right;
	BTNode(int val) :data(val), left(NULL), right(NULL) {}

};
static void LevelSort(BTNode* t)
{
	if (t == NULL)
		return;
	queue<BTNode*> q;
	q.push(t);
	while (!q.empty())
	{
		t = q.front();
		q.pop();
		cout << t->data<<'\t';
		if (t->left) q.push(t->left);
		if (t->right) q.push(t->right);
	}
}
int main()
{
	BTNode* root = new BTNode(1);
	root->left = new BTNode(2);
	root->right = new BTNode(3);
	root->left->left = new BTNode(4);
	root->left->right = new BTNode(5);
	root->right->left = new BTNode(6);
	root->right->right = new BTNode(7);
	cout << "层次遍历:" << endl;
	LevelSort(root);
	return 0;
}

 

求高度

#include<iostream>
#include<queue>
using namespace std;
struct BTNode
{
	int data;
	BTNode* left, * right;
	BTNode(int val) :data(val), left(NULL), right(NULL) {}

};
//求高度递归
/*int GetHeight(BTNode* t)
{
	if (t == NULL)
		return 0;
	int l = GetHeight(t->left);
	int r = GetHeight(t->right);
	return 1 + (l > r ? l : r);
}*/
//求高度 非递归
 int GetHeight(BTNode* t)
{
	if (t == NULL)
		return 0;
	int level = 0;
	queue<BTNode*> q;
	q.push(t);
	while (!q.empty())
	{ 
		int n = q.size();  //计算当前结点的个数
		for (int i = 0; i < n; i++) //以当前结点个数为循环次数 当循环结束 当前结点全部pop出去 他们的孩子留下来 
		{
			t = q.front(); //t 为队列第一个元素
			q.pop();
			if (t->left) q.push(t->left);
			if (t->right) q.push(t->right);

		}
		level++;
	}
	return level;


}
int main()
{
	BTNode* root = new BTNode(1);
	root->left = new BTNode(2);
	root->right = new BTNode(3);
	root->left->left = new BTNode(4);
	root->left->right = new BTNode(5);
	root->right->left = new BTNode(6);
	root->right->right = new BTNode(7);
	int b = GetHeight(root);
	cout << b << endl;
	return 0;
}

相关推荐

  1. 数据结构 | &

    2023-12-12 03:26:05       35 阅读

最近更新

  1. TCP协议是安全的吗?

    2023-12-12 03:26:05       18 阅读
  2. 阿里云服务器执行yum,一直下载docker-ce-stable失败

    2023-12-12 03:26:05       19 阅读
  3. 【Python教程】压缩PDF文件大小

    2023-12-12 03:26:05       18 阅读
  4. 通过文章id递归查询所有评论(xml)

    2023-12-12 03:26:05       20 阅读

热门阅读

  1. python的shutil模块

    2023-12-12 03:26:05       35 阅读
  2. 231211 刷题日报

    2023-12-12 03:26:05       45 阅读
  3. 数据结构 | 快速排序(更正)

    2023-12-12 03:26:05       45 阅读
  4. Audio Signal (MATLAB) 代码学习1-常见问题

    2023-12-12 03:26:05       37 阅读
  5. MySQL-备份+日志:介质故障与数据库恢复

    2023-12-12 03:26:05       41 阅读
  6. 音频和视频的处理和分析(MATLAB)

    2023-12-12 03:26:05       38 阅读
  7. linux查看本机ip地址

    2023-12-12 03:26:05       40 阅读
  8. hadoop-hdfs简介及常用命令详解(超详细)

    2023-12-12 03:26:05       30 阅读
  9. vue中yarn install超时问题

    2023-12-12 03:26:05       39 阅读
  10. redis

    redis

    2023-12-12 03:26:05      46 阅读
  11. 朴素贝叶斯 Numpy实现高斯朴素贝叶斯

    2023-12-12 03:26:05       35 阅读
  12. 自定义插件vue-router简单实现hashRouter设计思路

    2023-12-12 03:26:05       27 阅读
  13. Linux网络编程:多播的使用

    2023-12-12 03:26:05       23 阅读