在Leetcode上刷题时,遇到与二叉树有关的题目时,由于无法使用本地IDE进行调试,导致无法更深入的了解出错的原因,为了方便测试,特意写了一段小程序,可以根据数组生成二叉树,即可将LeetCode提供的测试数组样例转换成二叉树。代码如下:
1.H文件
#ifndef BINARYTREENODE_H_INCLUDED
#define BINARYTREENODE_H_INCLUDED
#include
#include
#define null 9999
using namespace std;
struct TreeNode
{
public:
int val;
TreeNode* left;
TreeNode* right;
TreeNode(int _value):val(_value),left(NULL),right(NULL)
{
}
};
void ConnectTreeNodes(TreeNode* pParent,TreeNode* pLeft,TreeNode* pRight);
vector CreateFromArrayToTree(vector &V);
#endif // BINARYTREENODE_H_INCLUDED
#include"BinaryTreeNode.h"
void ConnectTreeNodes(TreeNode* pParent,TreeNode* pLeft,TreeNode* pRight)
{
if(pParent)
{
pParent->left=pLeft;
pParent->right=pRight;
}
}
vector CreateFromArrayToTree(vector &arrays)
{
if(arrays.size()==0||arrays[0]==null)
return {NULL};
vector V{0};
V[0]=arrays[0];
for(int i=1,j=1;j PointerOfTree(V.size(),NULL);
for(int i=0;i
#include "BinaryTreeNode.h"
using namespace std;
int depth(TreeNode *root)
{
if(root==NULL)
return 0;
int left=1;
int right=1;
left=left+depth(root->left);
right=right+depth(root->right);
return left>right?left:right;
}
int main()
{
vector V={1,-2,-3,1,3,-2,null,-1};
/************************************************************
1
/ \
-2 -3
/ \ /
1 3 -2
/
-1
************************************************************/
vector BinaryTreePoint=CreateFromArrayToTree(V);
TreeNode *root=BinaryTreePoint[0];
cout<right)<
以下是测试结果:
main.c中的depth函数是一个求二叉树深度的函数,根据传入的根节点输出不同的值,其他题目只需在main.c中编写相对应的代码即可