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;
        }
    }
  • 相关阅读:
    Linux命令:cp (copy)复制文件或目录
    使用 robots.txt 文件阻止或删除网页说明
    ecshop优化修改sitemap.xml到根目录
    我虚拟机上装的CentOS系统显示的ip配置是127.0.0.1,请问如何解决?
    Servlet/JSP vs. ASP.NET MVC
    Ubuntu Linux 上安装Apache的过程
    Ubuntu Linux 上安装Eclipse的过程
    sudo的意义
    Dependency Injection
    Ubuntu Linux 上安装TomCat的过程
  • 原文地址:https://www.cnblogs.com/music-liang/p/12610811.html
Copyright © 2011-2022 走看看