二叉树测试用例-前序遍历

#include<vector>
#include<stack>

using namespace std;

struct TreeNode {
	int val;
	TreeNode* left;
	TreeNode* right;
	TreeNode(int x) : val(x), left(nullptr), right(nullptr) {}
};



TreeNode* buildtree(vector<int> array, int index)
{
	TreeNode* root = nullptr;

	if (index < array.size() && array[index] != NULL)
	{
		root = new TreeNode(array[index]);
		root->left = buildtree(array, 2 * index + 1);
		root->right = buildtree(array, 2 * index + 2);
	}
	return root;
}

vector<int> preorder(TreeNode* root) {
	vector<int> res;
	TreeNode* p = root;
	stack<TreeNode*> s;
	while (p || !s.empty()) {
		if (p) {
			s.push(p);
			res.push_back(p->val);
			p = p->left;
		}
		else {
			p = s.top();
			s.pop();
			p = p->right;
		}
	}
	return res;
}



int main()
{
	vector<int> array = { 4,1,6,9,2,5,7,NULL,NULL,NULL,3,NULL,NULL,NULL,8 };
	TreeNode* root;
	root = buildtree(array, 0);

	vector<int> final = preorder(root);
	for (int i = 0; i < final.size(); i++) {
		cout << final[i] << " ";
	}
	return 0;
}

全部评论

相关推荐

屌丝逆袭咸鱼计划:心态摆好,man,晚点找早点找到最后都是为了提升自己好进正职,努力提升自己才是最关键的😤难道说现在找不到找的太晚了就炸了可以鸡鸡了吗😤早实习晚实习不都是为了以后多积累,大四学长有的秋招进的也不妨碍有的春招进,人生就这样
点赞 评论 收藏
分享
Southyeung:我说一下我的看法(有冒犯实属抱歉):(1)简历不太美观,给我一种看都不想看的感觉,感觉字体还是排版问题;(2)numpy就一个基础包,机器学习算法是什么鬼?我感觉你把svm那些写上去都要好一点。(2)课程不要写,没人看,换成获奖经历;(3)项目太少了,至少2-3个,是在不行把网上学习的也写上去。
点赞 评论 收藏
分享
评论
点赞
收藏
分享

创作者周榜

更多
牛客网
牛客网在线编程
牛客网题解
牛客企业服务