tree类型题目需要用到的头文件tree.h

下面是树类型题目需要用到的头文件tree.h,请包含在cpp文件中编译,而不是放在c文件中编译,比如查找树中两个节点的最低公共父结点的题common_parent_in_tree.cpp,编译它的方法是:

g++ -g common_parent_in_tree.cpp -o common_parent_in_tree


下面是tree.h的内容:

#include <stdio.h>
#include <vector>

struct TreeNode{
    int value;
    std::vector<TreeNode*> vec_children;
};

TreeNode* CreateTreeNode(int value){
    TreeNode* pNode = new TreeNode();
    pNode->value = value;

    return pNode;
}

void ConnectTreeNodes(TreeNode* pParent, TreeNode* pChild){
    if(pParent != NULL){
        pParent->vec_children.push_back(pChild);
    }
}

void PrintTreeNode(TreeNode* pNode){
    if(pNode != NULL){
        printf("value of this node is: %d\n", pNode->value);

        printf("its children is as the following");
        std::vector<TreeNode*>::iterator i = pNode->vec_children.begin();
        while(i < pNode->vec_children.end()){
            if(*i != NULL)
                printf("%d\t", (*i)->value);
        }
        printf("\n");
    }else{
        printf("this node is null.\n");
    }
    printf("\n");
}

void PrintTree(TreeNode* pRoot){
    PrintTreeNode(pRoot);

    if(pRoot != NULL){
        std::vector<TreeNode*>::iterator i = pRoot->vec_children.begin();
        while(i < pRoot->vec_children.end()){
            PrintTreeNode(*i);
            ++i;
        }
    }
}

void DestroyTree(TreeNode* pRoot){
    if(pRoot != NULL){
        std::vector<TreeNode*>::iterator i = pRoot->vec_children.begin();
        while(i < pRoot->vec_children.end()){
            DestroyTree(*i);
            ++i;
        }
        delete pRoot;
    }
}


评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值