请稍等 ...
×

采纳答案成功!

向帮助你的同学说点啥吧!感谢那些助人为乐的人

二叉树测试代码

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

十分感谢~

正在回答

2回答

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


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


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

2 回复 有任何疑惑可以回复我~
  • 提问者 gin_gin #1
    非常感谢!
    回复 有任何疑惑可以回复我~ 2018-08-05 20:11:01
  • bobo老师帮忙看看有没有bug~~
    回复 有任何疑惑可以回复我~ 2018-08-07 20:02:01
慕雪9091725 2018-08-07 19:52:34
 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 回复 有任何疑惑可以回复我~
  • 感谢分享:)加油!
    回复 有任何疑惑可以回复我~ 2018-08-07 22:55:28
问题已解决,确定采纳
还有疑问,暂不采纳
意见反馈 帮助中心 APP下载
官方微信