データ構造の学習経験共有(二叉樹に関する内容)

2622 ワード

本論文は主に二叉樹に関する内容であり、
まず、二叉樹に関する基本コードを述べ、二叉樹の基本的な知識をまとめ、最後に二叉樹に関するテーマの総括を概説した.
1.二叉樹基本データ構造の説明 
struct BinaryTreeNode                 //          
{
    int                    m_nValue;    //         
    BinaryTreeNode*        m_pLeft;     //    
    BinaryTreeNode*        m_pRight;    //    
};

BinaryTreeNode* CreateBinaryTreeNode(int value);         //       
void ConnectTreeNodes(BinaryTreeNode* pParent, BinaryTreeNode* pLeft, BinaryTreeNode* pRight);  //       
 void PrintTreeNode(BinaryTreeNode* pNode);       //       
 void PrintTree(BinaryTreeNode* pRoot);          //     
void DestroyTree(BinaryTreeNode* pRoot);         //     
// 《  Offer——            》  
//       :   

#include "StdAfx.h"
#include "BinaryTree.h"

BinaryTreeNode* CreateBinaryTreeNode(int value)             //       
{
    BinaryTreeNode* pNode = new BinaryTreeNode();
    pNode->m_nValue = value;
    pNode->m_pLeft = NULL;
    pNode->m_pRight = NULL;

    return pNode;
}

void ConnectTreeNodes(BinaryTreeNode* pParent, BinaryTreeNode* pLeft, BinaryTreeNode* pRight)  //       
{
    if(pParent != NULL)
    {
        pParent->m_pLeft = pLeft;
        pParent->m_pRight = pRight;
    }
}

void PrintTreeNode(BinaryTreeNode* pNode)                             //      
{
    if(pNode != NULL)
    {
        printf("value of this node is: %d
", pNode->m_nValue); if(pNode->m_pLeft != NULL) printf("value of its left child is: %d.
", pNode->m_pLeft->m_nValue); else printf("left child is null.
"); if(pNode->m_pRight != NULL) printf("value of its right child is: %d.
", pNode->m_pRight->m_nValue); else printf("right child is null.
"); } else { printf("this node is null.
"); } printf("
"); } void PrintTree(BinaryTreeNode* pRoot) // { PrintTreeNode(pRoot); if(pRoot != NULL) { if(pRoot->m_pLeft != NULL) PrintTree(pRoot->m_pLeft); if(pRoot->m_pRight != NULL) PrintTree(pRoot->m_pRight); } } void DestroyTree(BinaryTreeNode* pRoot) { if(pRoot != NULL) { BinaryTreeNode* pLeft = pRoot->m_pLeft; BinaryTreeNode* pRight = pRoot->m_pRight; // , , delete pRoot; pRoot = NULL; DestroyTree(pLeft); DestroyTree(pRight); } }