zoukankan      html  css  js  c++  java
  • 【数据结构】郝斌数据结构——笔记07

    树 Tree

    概念:

    1、根节点,该节点上,没有父节点

    2、子节点,存在与根节点下,数量若干,但只能有一个父节点

    3、由【节点】和【边】组成

    4、深度,从根节点到最低层节点的层数称为深度

    5、叶子节点,该节点无子节点

    6、非终端节点,上有老,下有小

    7、度,子节点个数

    分类:

    1、一般树,子节点的个数无限制

    2、二叉树,子节点个数最多2个,且子节点位置不可更改

    3、森林,N个互不相交的树的集合

    二叉树:

    1、一般二叉树

    2、满二叉树

    3、完全二叉树

    #include <stdio.h>
    #include <stdlib.h>
    #include <malloc.h>
    
    typedef struct BalanceTreeNode {
        int data;
        struct BalanceTreeNode * pLeftNode;
        struct BalanceTreeNode * pRightNode;
    } BtNode, * PBtNode;
    
    PBtNode createBalanceTreeNode(int data);
    void traverseTree(PBtNode root);
    
    int main() {
    
        PBtNode root = createBalanceTreeNode(0);
        PBtNode b = createBalanceTreeNode(12);
        PBtNode c = createBalanceTreeNode(33);
        PBtNode d = createBalanceTreeNode(55);
        PBtNode e = createBalanceTreeNode(23);
    
        root -> pLeftNode = b;
        root -> pRightNode = c;
        c -> pLeftNode = d;
        d -> pLeftNode = e;
    
        traverseTree(root);
    
        return 0;
    }
    
    /**
     * 创建树节点
     * @param data 
     * @return 
     */
    PBtNode createBalanceTreeNode(int data) {
        PBtNode pNewBtNode = (PBtNode)malloc(sizeof(BtNode));
        if (NULL == pNewBtNode) {
            printf("内存分配失败,程序中止");
            exit(-1);
        }
        pNewBtNode -> data = data;
        pNewBtNode -> pLeftNode = NULL;
        pNewBtNode -> pRightNode = NULL;
        return pNewBtNode;
    }
    
    /**
     * 遍历树节点
     * @param iterator 
     */
    void traverseTree(PBtNode iterator) {
        if (NULL == iterator) return;
        printf("%d
    ", iterator -> data);
        if (NULL != iterator -> pLeftNode) traverseTree(iterator -> pLeftNode);
        if (NULL != iterator -> pRightNode) traverseTree(iterator -> pRightNode);
    }
    

      

  • 相关阅读:
    P4178 Tree
    CF437D The Child and Zoo
    CF1032G Chattering ST表+倍增
    P4165 [SCOI2007]组队 推柿子+差分
    P1450 [HAOI2008]硬币购物 容斥原理+完全背包
    P6275 [USACO20OPEN]Sprinklers 2: Return of the Alfalfa P 轮廓线DP
    P6009 [USACO20JAN]Non-Decreasing Subsequences P 矩阵优化DP
    P2605 [ZJOI2010]基站选址 线段树优化DP
    P5597 【XR-4】复读 思维题 +二叉树合并
    P5304 [GXOI/GZOI2019]旅行者 最短路+位运算优化
  • 原文地址:https://www.cnblogs.com/mindzone/p/14624711.html
Copyright © 2011-2022 走看看