笔记:树及二叉树的基本概念

树的基本术语:

1.根节点:树的顶部节点,没有父节点。

2.叶子节点:没有子节点的节点。

3.双亲节点:某个节点的直接上一级的节点。

4.子节点:某个节点的直接下一级节点。

5.兄弟节点:即在同一双亲节点下的节点。

6.节点深度:表示从根节点到当前节点的路径长度,默认根节点的深度为 0。

7.节点高度:表示从当前节点到叶子节点的最长路径长度,叶子节点的高度为 0。

8.子树:以某个节点为根节点的子树,包含该节点及其所有的后代节点。

9.森林:若干棵不相交的树组成的集合。

二叉树的基本概念理解:

1.有且只有一个根节点。

2.除根节点以外都分为T1和T2两个子树。

3.满二叉树:即有2的n次方减1个节点的二叉树

4.完全二叉树:(自己理解为)除了最后一层,其他层次都已经到达最大层次,并且最后一层都位于树的左分支(左分支满之后在延伸右分支)。

二叉树与树的基本区别:

二叉树每个节点最多只有两个分支子树。左右两子树次序不能任意颠倒。

以下是初步编写的二叉树创建节点函数,释放二叉树函数,以及前,中,后序遍历的子函数。

#include "stdio.h"
#include "malloc.h"

typedef struct TreeNode 
{
    int num;                            // 节点存放的数值
    struct TreeNode* lchild;            // 左子节点指针
    struct TreeNode* rchild;            // 右子节点指针
    
} TreeNode;


TreeNode* new_node(int num)             // 创建一个新节点,此处并未递归创建
{
    TreeNode*node=(TreeNode*)malloc(sizeof(TreeNode));
    
    node->num=num;
    node->lchild=NULL;
    node->rchild=NULL;
    return node;
}

void preorder_traversal(TreeNode* root)  //二叉树的前序遍历
{
    if(root==NULL) 
    return;
    
    printf("%d ",root->num);
    
    preorder_traversal(root->lchild);

    preorder_traversal(root->rchild);
}

void inorder_traversal(TreeNode* root)   //二叉树的中序遍历
 {
    if(root==NULL) 
    return;
    
    inorder_traversal(root->lchild);
    
    printf("%d ", root->num);
    
    inorder_traversal(root->rchild);
}

void Follow_up_traversal(TreeNode* root) //二叉树的后序遍历
{
    if (root == NULL) {
    return;
    }
    Follow_up_traversal(root->lchild);
    
    Follow_up_traversal(root->rchild);
    
    printf("%d ", root->num);
}


void release(TreeNode* root) //二叉树释放内存空间 
{
    if (root==NULL)          //判断是否为空在进行释放
    return;
    
    release(root->lchild);

    release(root->rchild);

    free(root);
    
}

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 3
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 3
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值