LeetCode二叉树的实现

在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
2.C文件

#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
3.测试主文件

#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中编写相对应的代码即可

猜你喜欢

转载自blog.csdn.net/u012021393/article/details/72655242