c++ 二叉树

98次阅读
没有评论

#include <stdio.h>
#include <stdlib.h>

typedef char ElementType;
typedef struct TNode *Position;
typedef Position BinTree;
struct TNode {
    ElementType Data;
    BinTree Left;
    BinTree Right;
};

BinTree CreatBinTree(); /* 创建二叉树的函数 */
void PreorderPrintLeaves(BinTree BT);

int main() {
    BinTree BT = CreatBinTree();
    printf("Leaf nodes are:");
    PreorderPrintLeaves(BT);
    printf("\n");
    return 0;
}

/* 创建二叉树的实现 */
BinTree CreatBinTree() {
    /* 创建如下结构的二叉树:
           A
         /   \
        B     C
       / \   /
      D   E F
         / \
        G   H
       /
      I
    */
    BinTree A = (BinTree)malloc(sizeof(struct TNode));
    A->Data = 'A';
    
    BinTree B = (BinTree)malloc(sizeof(struct TNode));
    B->Data = 'B';
    
    BinTree C = (BinTree)malloc(sizeof(struct TNode));
    C->Data = 'C';
    
    BinTree D = (BinTree)malloc(sizeof(struct TNode));
    D->Data = 'D';
    D->Left = D->Right = NULL;
    
    BinTree E = (BinTree)malloc(sizeof(struct TNode));
    E->Data = 'E';
    
    BinTree F = (BinTree)malloc(sizeof(struct TNode));
    F->Data = 'F';
    F->Left = F->Right = NULL;
    
    BinTree G = (BinTree)malloc(sizeof(struct TNode));
    G->Data = 'G';
    
    BinTree H = (BinTree)malloc(sizeof(struct TNode));
    H->Data = 'H';
    H->Left = H->Right = NULL;
    
    BinTree I = (BinTree)malloc(sizeof(struct TNode));
    I->Data = 'I';
    I->Left = I->Right = NULL;
    
    A->Left = B;
    A->Right = C;
    B->Left = D;
    B->Right = E;
    C->Left = F;
    C->Right = NULL;
    E->Left = G;
    E->Right = H;
    G->Left = I;
    G->Right = NULL;
    
    return A;
}

/* 前序遍历打印叶子节点 */
void PreorderPrintLeaves(BinTree BT) {
    if (BT) {
        if (!BT->Left && !BT->Right) {
            printf(" %c", BT->Data);
        }
        PreorderPrintLeaves(BT->Left);
        PreorderPrintLeaves(BT->Right);
    }
}

正文完
 0
bld
版权声明:本站原创文章,由 bld 于2025-11-01发表,共计1302字。
转载说明:除特殊说明外本站文章皆由CC-4.0协议发布,转载请注明出处。
评论(没有评论)