首页 > 其他分享 >二叉树

二叉树

时间:2023-06-07 19:56:09浏览次数:35  
标签:lchild return tree BiTNode 二叉树 printf rchild

(不是太太太理解)

1、结构体定义

typedef struct BiTNode
{
    TElemType data;
    struct BiTNode *lchild, *rchild;
}BiTNode;

2、构造二叉树

int CreateBTree(BiTNode **tp)//?
{
    //构造方法,或者说构造顺序,从左子树开始构造
    int x;
    printf("please inpyut integer:");
    scanf("%d",&x);
    if(x<=0)
    {
        *tp = NULL;//指针为空,树节点中的某个指针为空
        return 0;
    }
    *tp = (BiTNode *)malloc(sizeof(BiTNode));
    if(tp == NULL)
    {
        return 0;
    }
    (*tp)->data = x;
    CreateBTree(&((*tp)->lchild));
    CreateBTree(&((*tp)->rchild));     
    return 1;
}

 3、各种递归遍历

void PreOrder(BiTNode *tree)
{
    if(tree == NULL)
    {
        return;
    }
    printf("%d",tree->data);
    PreOrder(tree->lchild);
    PreOrder(tree->rchild);
}
//
void MidOrder(BiTNode *tree)
{
    if(tree == NULL)
    {
        return;
    }
    MidOrder(tree->lchild);
    printf("%d",tree->data);
    MidOrder(tree->rchild);
}
//
void PostOrder(BiTNode *tree)
{
    if(tree == NULL)
    {
        return;
    }
    PostOrder(tree->lchild);
    PostOrder(tree->rchild);
    printf("%d",tree->data);
}

4、置空二叉树

//置空二叉树
void BiTreeSetNull(BiTNode *tree)
{
    if(tree == NULL)
    {
        return ;
    }
    BiTreeSetNull(tree->lchild);
    BiTreeSetNull(tree->rchild);
    free(tree);
}

 5、主函数

int main()
{
    BiTNode *tree = NULL;
    printf("Create binary tree:\n");
    CreateBTree(&tree);

    printf("Pre Order:\n");
    PreOrder(tree);
    printf("\n");

    printf("Mid Order:\n");
    MidOrder(tree);
    printf("\n");

    printf("Post Order:\n");
    PostOrder(tree);
    printf("\n");

    return 0;
}

  

 

标签:lchild,return,tree,BiTNode,二叉树,printf,rchild
From: https://www.cnblogs.com/gunancheng/p/17459740.html

相关文章

  • 数据结构与算法-06树及二叉树
    树和二叉树完全二叉树:除了最下层,每一层都满了满二叉树:每一层都满了平衡二叉树:任意两个节点的高度差不大于1排序二叉树:链式存储常见应用场景xml/html解析路由协议mysql数据库索引文件系统结构二叉树在二叉树的第i层上至多有2^(i-1)个结点深度为k的二叉树......
  • 【锐格】数据结构-实验-二叉树
    7075#include<iostream>#include<cstdio>usingnamespacestd;typedefstructTNode{chardata;structTNode*lchild,*rchild;}BiNode,*BiTree;BiTreeT;voidcreateTree(BiTree&T){charch;cin>>ch;if(ch==&#......
  • 30. 平衡二叉树
    一、什么是平衡二叉树  平衡二叉树(BalanceFactorTree,简称AVL树)是一个特殊的二叉树,它可以是空树。如果不为空,它任一节点左、右子树高度差的绝对值不超过1,即|BF(T)|≤1。其中,BF是指平衡因子(BalanceFactory):\(BF(T)=h_{L}-h_{R}\),其中\(h_{L}\)和\(h_{R}\)分别为......
  • #yyds干货盘点# LeetCode程序员面试金典:二叉树的右视图
    1.简述:给定一个二叉树的根节点root,想象自己站在它的右侧,按照从顶部到底部的顺序,返回从右侧所能看到的节点值。 示例1:输入: [1,2,3,null,5,null,4]输出: [1,3,4]示例2:输入: [1,null,3]输出: [1,3]示例3:输入: []输出: []2.代码实现:classSolution{publicList<I......
  • #yyds干货盘点# LeetCode程序员面试金典:二叉树中的最大路径和
    题目:二叉树中的路径被定义为一条节点序列,序列中每对相邻节点之间都存在一条边。同一个节点在一条路径序列中至多出现一次。该路径至少包含一个节点,且不一定经过根节点。路径和是路径中各节点值的总和。给你一个二叉树的根节点root,返回其最大路径和。 示例1:输入:root=......
  • 2023-06-06:给你二叉树的根结点 root ,请你设计算法计算二叉树的 垂序遍历 序列。 对位
    2023-06-06:给你二叉树的根结点root,请你设计算法计算二叉树的垂序遍历序列。对位于(row,col)的每个结点而言,其左右子结点分别位于(row+1,col-1)和(row+1,col+1)树的根结点位于(0,0)。二叉树的垂序遍历从最左边的列开始直到最右边的列结束,按列索引每一列上......
  • 2023-06-06:给你二叉树的根结点 root ,请你设计算法计算二叉树的 垂序遍历 序列。 对位
    2023-06-06:给你二叉树的根结点root,请你设计算法计算二叉树的垂序遍历序列。对位于(row,col)的每个结点而言,其左右子结点分别位于(row+1,col-1)和(row+1,col+1)树的根结点位于(0,0)。二叉树的垂序遍历从最左边的列开始直到最右边的列结束,按列索引每一......
  • 代码随想录Day17|二叉树(五)
     今日任务513.找树左下角的值112. 路径总和  113.路径总和ii106.从中序与后序遍历序列构造二叉树 105.从前序与中序遍历序列构造二叉树100.相同的树572.另一个树的子树 513.找树左下角的值层序遍历/***Definitionforabinarytreenode.*publiccl......
  • 104. 二叉树的最大深度
    104.二叉树的最大深度题目算法设计:回溯算法设计:分解子问题 题目传送门:https://leetcode.cn/problems/maximum-depth-of-binary-tree/ 算法设计:回溯回溯框架,请猛击:《常见递归模式》。思路:遍历一遍二叉树,用一个外部变量记录每个节点所在的深度,取最大值就可以得到最大深度,这就是......
  • 根据层序遍历结果来构建完全二叉树
    做实习笔试时遇到的一个题里用到了根据层序遍历的结果来构建二叉树。全部代码如下importjava.io.BufferedReader;importjava.io.IOException;importjava.io.InputStreamReader;importjava.util.*;publicclassMain{publicstaticvoidmain(String[]args)throw......