zoukankan      html  css  js  c++  java
  • 数据结构--树

    /*******************************************************************
    Copyright(c) 2016, Harry He
    All rights reserved.
    Distributed under the BSD license.
    (See accompanying file LICENSE.txt at
    https://github.com/zhedahht/CodingInterviewChinese2/blob/master/LICENSE.txt)
    *******************************************************************/
    
    //==================================================================
    // 《剑指Offer——名企面试官精讲典型编程题》代码
    // 作者:何海涛
    //==================================================================
    
    #pragma once
    
    #include <vector>
    
    struct TreeNode 
    {
        int                       m_nValue;    
        std::vector<TreeNode*>    m_vChildren;    
    };
    
    __declspec( dllexport ) TreeNode* CreateTreeNode(int value);
    __declspec( dllexport ) void ConnectTreeNodes(TreeNode* pParent, TreeNode* pChild);
    __declspec( dllexport ) void PrintTreeNode(const TreeNode* pNode);
    __declspec( dllexport ) void PrintTree(const TreeNode* pRoot);
    __declspec( dllexport ) void DestroyTree(TreeNode* pRoot);
    /*******************************************************************
    Copyright(c) 2016, Harry He
    All rights reserved.
    Distributed under the BSD license.
    (See accompanying file LICENSE.txt at
    https://github.com/zhedahht/CodingInterviewChinese2/blob/master/LICENSE.txt)
    *******************************************************************/
    
    //==================================================================
    // 《剑指Offer——名企面试官精讲典型编程题》代码
    // 作者:何海涛
    //==================================================================
    
    #include "Tree.h"
    
    TreeNode* CreateTreeNode(int value)
    {
        TreeNode* pNode = new TreeNode();
        pNode->m_nValue = value;
    
        return pNode;
    }
    
    void ConnectTreeNodes(TreeNode* pParent, TreeNode* pChild)
    {
        if(pParent != nullptr)
        {
            pParent->m_vChildren.push_back(pChild);
        }
    }
    
    void PrintTreeNode(const TreeNode* pNode)
    {
        if(pNode != nullptr)
        {
            printf("value of this node is: %d.
    ", pNode->m_nValue);
    
            printf("its children is as the following:
    ");
            std::vector<TreeNode*>::const_iterator i = pNode->m_vChildren.begin();
            while(i < pNode->m_vChildren.end())
            {
                if(*i != nullptr)
                    printf("%d	", (*i)->m_nValue);
            }
    
            printf("
    ");
        }
        else
        {
            printf("this node is nullptr.
    ");
        }
    
        printf("
    ");
    }
    
    void PrintTree(const TreeNode* pRoot)
    {
        PrintTreeNode(pRoot);
    
        if(pRoot != nullptr)
        {
            std::vector<TreeNode*>::const_iterator i = pRoot->m_vChildren.begin();
            while(i < pRoot->m_vChildren.end())
            {
                PrintTree(*i);
                ++i;
            }
        }
    }
    
    void DestroyTree(TreeNode* pRoot)
    {
        if(pRoot != nullptr)
        {
            std::vector<TreeNode*>::iterator i = pRoot->m_vChildren.begin();
            while(i < pRoot->m_vChildren.end())
            {
                DestroyTree(*i);
                ++i;
            }
    
            delete pRoot;
        }
    }
  • 相关阅读:
    Spring配置文件命名空间
    JSTL之数字、日期格式化<fmt:formatNumber/>、<fmt:formatDate/>
    获取真实ip
    DES
    MD5
    手动导入maven包
    windows下redis主从复制设置
    linux系统上传图片读取权限设置
    linux系统项目查看进程
    linux上服务起的很慢解决方式
  • 原文地址:https://www.cnblogs.com/music-liang/p/12610811.html
Copyright © 2011-2022 走看看