欢迎您访问程序员文章站本站旨在为大家提供分享程序员计算机编程知识!
您现在的位置是: 首页

周末说说二叉树之重构

程序员文章站 2022-05-06 21:38:23
...

老师在讲这个根据前序,中序的结果重建二叉树的时候,事实上是给出了流程图的,但递归的方法更简单:
周末说说二叉树之重构
然后看看left和right的构造就行了:
周末说说二叉树之重构

那么代码是不是也很简单呢:

struct node *rebuild(int *Preorder, int *Inorder, int StartPre, int EndPre, int StartMid, int EndMid)
{
	struct node *root;
	int distance;

	if (StartPre > EndPre || StartMid > EndMid) {
		return NULL;
	}
	
	for (distance = 0; distance < EndMid; distance++) {
		if (Inorder[StartMid + distance] == Preorder[StartPre]) {
			break;
		}
	}

	root = (struct node *)malloc(sizeof(struct node));
	root->val = Preoder[StartPre];
	root->left = rebuild(Preorder, Inorder, StartPre + 1, StartPre + distance, StartMid, distance - 1);
	root->right = rebuild(Preorder, Inorder, StartPre + distance + 1, EndPre, distance + 1, EndMid);

	return root;
	
}

还有不到一个半月就要软考了,三个月前我报了个软考培训班,身边的同事朋友们都笑我,觉得这个没有意义很low逼,我并不这么认为,饱汉不知饿汉饥,作为一个不会编程的手艺人,任何培训都是一个梳理知识体系的机会,此外,我并非科班,又是个大专,大家认为理所当然的东西可能在我这里就是个空白,所以我并不认为这没有意义。我必须抓住一切机会,抓住任何渠道,不断学习。

此外,在这个高度内卷的时代,没有学历,退休以后是拿不到国家承诺的退休金的,证书多拿一个是一个,虽大势上于事无补,多一分钱是一分钱吧。

在这个培训中,我觉得关系代数这个比较有趣,我之前没接触过这个领域,这也算弥补了我的一个知识空白,此外就是数据结构了,本文就是其中一例。


浙江温州皮鞋湿,下雨进水不会胖。

相关标签: 二叉树重构