题目要求:

按照先序遍历序列建立二叉树的二叉链表
从键盘输入二叉树的节点信息,建立二叉树的存储结构
在建立二叉树的过程中按照二叉树先序方式建立

思路:

当只有一个先序序列的时候无法确定为一个一颗二叉树
需要在先序序列中用特殊字符补充空节点,使二叉树的建立唯一

代码实现:

//按照先序遍历序列建立二叉树的二叉链表
//从键盘输入二叉树的节点信息,建立二叉树的存储结构
//在建立二叉树的过程中按照二叉树先序方式建立//当只有一个先序序列的时候无法确定为一个一颗二叉树
//需要在先序序列中用特殊字符补充空节点,使二叉树的建立唯一
#include<stdio.h>
#include<stdlib.h>typedef char BTNDataType;
typedef struct BinaryTreeNode
{BTNDataType data;struct BinaryTreeNode* left;struct BinaryTreeNode* right;
}BTNode;typedef struct BinaryTree
{BTNode* root;
}BT;BTNode* BinaryTreeCreate(BTNode* root)
{char ch;printf("输入一个二叉树先序序列,并且用#代表空树\n");//scanf_s("%c", &ch);ch = getchar();if (ch=='#'){root = NULL;}else{root = (BTNode*)malloc(sizeof(BTNode));root->data = ch;root->left = BinaryTreeCreate(root->left);root->right = BinaryTreeCreate(root->right);}return root;
}
void TreeCreate(BT* B1)
{B1->root = NULL;
}
void PrevOrder(BTNode* root)//先序遍历
{if (root == NULL){return;}printf("%c ", root->data);//根结点PrevOrder(root->left);//左子树PrevOrder(root->right);//右子树
}
int main()
{BT t1;TreeCreate(&t1);(&t1)->root = BinaryTreeCreate((&t1)->root);PrevOrder((&t1)->root);system("pause");return 0;
}

树--先序遍历构建二叉树相关推荐

  1. 二叉树经典题之从前序和中序遍历构建二叉树

    前言: 二叉树刷题是有固定思维的,请移步 README]二叉树刷题框架 文章目录 前言: 从前序和中序遍历构建二叉树 思路 代码 注意 从中序和后序遍历构建二叉树 思路 代码 从前序和中序遍历构建二叉 ...

  2. 中序遍历+后序/先序遍历构建二叉树

    中序遍历+后序/先序遍历构建二叉树 @(算法学习) 给定中序+先序,中序+后序可以唯一构建一棵二叉树. 给定先序+后序,无法唯一确定,但是却是很好的考点,问总共有多少种可能...如2016.9月份PA ...

  3. 通过前序遍历和中序遍历构建二叉树 python实现

    前言 通过前序遍历和中序遍历构建二叉树的原理,主要是找前序遍历根节点在中序遍历中的位置,然后将二叉树而成左子树和右子树,然后依次进行这样的操作,思路还是比较简单的 代码 class Node:def ...

  4. 根据二叉树先序遍历和中序遍历构建二叉树

    前方有一个人在等着你,你只管勇敢的向前走 采用递归分治的思想,将一个大问题划分成子问题, 对于本题,根据二叉树先序遍历和中序遍历构建二叉树,思路: 我们可以求得根节点左子树的先序和中序序列,以及右子树 ...

  5. 【C++/数据结构】先序遍历+中序遍历构建二叉树

    #include<vector> using namespace std; struct TreeNode {     int val;     TreeNode* left;     T ...

  6. 通过层序遍历和中序遍历构建二叉树

    通过层序遍历和中序遍历构建二叉树的过程与通过中序遍历和先序遍历构建二叉树的过程很相似. 先序遍历和中序遍历是通过先序遍历的首个元素确定根节点,再根据这个元素在中序遍历中出现的位置分为左子树和右子树,然 ...

  7. 【LeetCode】——根据前序和中序遍历构建二叉树

    题目描述:从前序与中序遍历序列构建二叉树 注意:你可以假设数中没有重复元素. 例如,给出: 前序遍历 preorder = [3,9,20,15,7] 中序遍历 inorder = [9,3,15,2 ...

  8. 计蒜客 神奇的二叉树 ( 已知先序和中序遍历构建二叉树 )

    思路: 题目要求输出在镜子里看到的二叉树 , 观察后可以发现 , 镜像的二叉树后序遍历实际上是先遍历右子树再遍历左子树再遍历根 , 所以只需要改一下后序遍历顺序即可. #include <std ...

  9. 按照前序遍历和中序遍历构建二叉树

    转载自:http://blog.csdn.net/sbitswc/article/details/26433051 Given preorder and inorder traversal of a ...

最新文章

  1. 随手正则写的 CSDN【只看楼主】功能
  2. linux C 列出目录中的文件列表 包含文件的相关信息
  3. oracle数据库扩展目录,Oracle 扩充磁盘空间
  4. Linux日常运维管理技巧(四)文件同步工具-rsync、Linux系统日志、dmesg命令、lastb命令查看登录失败的用户、screen工具虚拟屏幕
  5. 39 CO配置-控制-产品成本控制-成本对象控制-实际成本核算/物料分类帐-激活评估范围的物料分类账
  6. OpenCV4每日一练day5:图像读取、显示与保存
  7. 【转】ThinkPHP命令行工具Tptool2.0使用教程
  8. 一个不会画流程图的程序员不是一个好码农
  9. zTree根据ID选中节点
  10. 绿坝十年,儿童网络安全保护问题仍未解决
  11. 【2】嵌入式TCP/IP协议——————Art-Net处理流程
  12. sublime 快捷键F5执行python程序
  13. 拿下国产高端市场第一背后,vivo与苹果、华为的共性
  14. 解决Visio和office365安装兼容问题
  15. Ubuntu1804 使用mondorescue 进行系统备份iso制作
  16. 获取各种屏幕大小(包括电脑屏幕)
  17. 四元数与旋转——学习笔记(一)
  18. ios 各种动画机制
  19. 使用str.split (“\\.“)分割文件前后缀
  20. HSIC转USB国产芯片 宸芯科技模块调试案例分享

热门文章

  1. 车用乙烯基薄膜市场现状及未来发展趋势
  2. 手游代理平台有哪些,有没有好的游戏平台推荐?
  3. 通过NFS(nfsroot)启动linux系统
  4. Linux LVS 负载均衡群集
  5. 可信云最高级认证 百度飞桨企业版BML就是这么飒!
  6. mysql命令大全(订正版)
  7. AtCoder Beginner Contest 136 E - Max GCD
  8. 2021年中国数据安全行业发展现状及未来发展前景分析:数据安全市场快速增长[图]
  9. Maven 的 Lifecycle 和 plugins
  10. 英语思维导图大全 虚拟语气(十三)