首页 > 其他分享 >144-16

144-16

时间:2023-10-15 19:46:21浏览次数:34  
标签:144 TreeNode CreateTree 16 结点 Head rchild NULL

设计一个算法,将二叉树的叶结点按从左到右的顺序连成一个单链表,表头指针为Head,二叉树按照二叉链表方式存储,链接时用叶结点的右指针域来存放单链表指针。

只需要找到叶子节点,然后将第一个叶子节点赋值给Head,其余的叶子结点按照顺序使用自己的右指针连接起来

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

typedef struct node{
    int data;
    struct node *lchild,*rchild;
}TreeNode,*Tree;

void CreateTree(Tree &T)        //先序创建二叉树,中序后序创建和递归遍历一样,只修改位置 
{
    int x;
    scanf("%d",&x);
    if(x==-1)
    {
        T=NULL;
        return;    
    }
    else
    {
        T=(TreeNode*)malloc(sizeof(TreeNode));
        T->data=x;
        printf("输入%d的左结点:",x);
        CreateTree(T->lchild);
        printf("输入%d的右结点:",x);
        CreateTree(T->rchild);
    }
}

TreeNode *Head=NULL,*r;
void List(Tree T)
{
    if(T==NULL)
        return;
    
    if(T->lchild==NULL&&T->rchild==NULL)
    {
        if(Head==NULL)
        {
            Head=T;
            r=T;    
        }
        else
        {
            r->rchild=T;
            r=T;    
        }    
    }
    
    List(T->lchild);
    List(T->rchild);    
}

void displayList(TreeNode *Head)
{
    while(Head)
    {
        printf("%d  ",Head->data);
        Head=Head->rchild;     
    }
}

int main()
{
    Tree T;
    CreateTree(T);
    List(T);
    displayList(Head);
    return 0;    
} 

 

标签:144,TreeNode,CreateTree,16,结点,Head,rchild,NULL
From: https://www.cnblogs.com/simpleset/p/17766037.html

相关文章

  • 144-17
    判断两树相似,相似是指,两个树都存在对应的左子树或右子树递归方法当两个结点都是空时:return1;当两个结点有一个为空时:return0;当两个都不为空时,开始递归,并返回左右子树的&&值#include<stdio.h>#include<stdlib.h>typedefstructnode{intdata;structnode......
  • 代码随想录算法训练营-动态规划-3-(0-1背包问题)|416. 分割等和子集、1049. 最后一块石
    416.分割等和子集01背包的递推公式为:dp[j]=max(dp[j],dp[j-weight[i]]+value[i]);如果dp[j]==j说明,集合中的子集总和正好可以凑成总和j,理解这一点很重要。1classSolution:2defcanPartition(self,nums:List[int])->bool:3_sum=......
  • java项目实践-webapp-mytomcat-day16
    目录1.http协议2.自定义的web框架3.具体实现4.启动1.http协议CS架构建立连接“三次握手”断开连接“四次挥手”三次握手:client:可以与你建立连接吗?server:可以的client:我也可以了四次挥手:client:我要断开server:可以断开server:我要断开client:可以断开双方都有......
  • CF1657E
    题目传送门description给定\(n,k\),求\(n\)个点的无向完全图满足其边权为\([1,k]\)中的正整数且其最小生成树边权和等于与1号点相连的边的权值和。\(n,k\leq250\)solution不妨先确定1号点到剩下\(n-1\)个点中\(i\)号点的边权为\(a_i\)。可以发现,对于其他每条......
  • 重庆大学考研916微机原理及应用三831历年真题912参考答案初试辅导资料【全】
    重庆大学考研916微机原理及应用三831历年真题912参考答案初试辅导资料【全】重庆大学微机原理考研916微机原理及应用三912微机原理及应用二、831微机原理及应用一历年真题参考答案初试辅导资料获取链接:https://www.uu2id.com/950.html 资料含历年真题难点题目详细解析2......
  • Python入门系列16-os模块
    一、os库介绍os库提供了操作系统功能接口函数,可以操作系统相关变量、文件和目录相关操作、路径相关操作。二、系统变量相关操作1、os.name:返回操作系统类型importosprint(os.name)输出:nt2、os.environ返回系统的环境变量importosprint(os.environ)3、os.sep:返回系统路径......
  • Python入门系列16-os模块
    一、os库介绍os库提供了操作系统功能接口函数,可以操作系统相关变量、文件和目录相关操作、路径相关操作。二、系统变量相关操作1、os.name:返回操作系统类型importosprint(os.name)输出:nt2、os.environ返回系统的环境变量importosprint(os.environ)3、os.sep:返回系统路径......
  • 2023-2024-1 20231416 《计算机基础与程序设计》第三周学习总结
    计算机科学概论第二章学习了二进制、八进制、十进制、十六进制的计算和转化,二进制与八进制采用“三合一”转化,即三位二进制数按权展开为一位八进制数,二进制与十六进制数采用“四合一”转化法,即四位二进制数按权展开得到一位十六进制数。例如:二进制→八进制010=0+12^1+0=2二进制......
  • 2023-2024-1 20231416 《计算机基础与程序设计》第三周学习总结
    计算机概论第二章中书里主要讲述了二进制八进制以及十六进制的运算以及十进制如何转化为不同的进制学习二进制计算是学习计算机程序的重中之重在经过不懈学习后掌握了二进制的我对于学习计算机更有了一份自信第三章中学习了补码反码等概念以及关键字编码行程长度编码......
  • P1612 [yLOI2018] 树上的链 题解
    思路看到条件\(2\),我们得知:这个节点对应的最长链,一定在这个节点到根节点的简单路径上。所以我们记录\(1\)到\(i\)之间的权值和,记为\(sum_i\)。因为权值是正整数,所以满足单调性,可以二分。如何二分路径上的点呢?我们维护一个与当前dfs同步的栈,记录从根节点到当前节点的简......