二叉树测试代码

来源:7-5 定义递归问题 Binary Tree Path

gin_gin

2018-08-05

波波老师,您好,请问二叉树创建和打印,测试的代码有么?

十分感谢~

写回答

2回答

liuyubobobo

2018-08-05

我通常都是这么愚蠢地测试。。。见这里的main函数:https://github.com/liuyubobobo/Play-Leetcode/blob/master/0222-Count-Complete-Tree-Nodes/cpp-0222/main.cpp


不过确实应该根据Leetcode的规则创建一个测试方式。我有时间写一套吧~


你也可以自己试试看哦:)加油!

2
2
慕雪9091725
bobo老师帮忙看看有没有bug~~
2018-08-07
共2条回复

慕雪9091725

2018-08-07

 TreeNode* CreatTree(vector<int>vectorTree) {

	 if (vectorTree.empty())
		 return NULL;
	 assert(vectorTree[0]);//头结点不能为空
	 queue<TreeNode*> que;//存放可插入的节点(所有非空叶子节点)
	 TreeNode* root;
	 root = new TreeNode(vectorTree[0]);
	 que.push(root);
	 
	 for (int i = 1; i < vectorTree.size(); i++) {
	 
		 assert(!que.empty());//保证传入值有效 如{0,1,2}无效
		 TreeNode* topNode = que.front();//更新可插入节点(待插入节点的父节点)
		 que.pop();
		 if (vectorTree[i] != 0) {//如果为0(NULL)时可以不做处理,因为构造节点时left和right默认值为NULL
			 TreeNode* newNode = new TreeNode(vectorTree[i]);
			 que.push(newNode);
			 topNode->left = newNode; 
		 }
		 
		 i++;//继续看右边
		 
		 if (i < vectorTree.size()) {//保证还有值
			 if (vectorTree[i] != 0){
				 TreeNode* newNode = new TreeNode(vectorTree[i]);
				 que.push(newNode);
				 topNode->right = newNode;
			 }  
		 }
	 }
	 return root; 
 }

用队列实现了leetcode输入规则下的创建二叉树,测试了一下应该能用:)

2
1
liuyubobobo
感谢分享:)加油!
2018-08-07
共1条回复

玩转算法面试-- Leetcode真题分门别类讲解

课程配套大量BAT面试真题,高频算法题解析,强化训练

7408 学习 · 1150 问题

查看课程