C语言 二叉树构建与前中后序遍历
2013-05-01 22:08
344 查看
闲来无事,随手练练好久不用的数据结构编码,写一个创建二叉树和遍历二叉树的小程序,如有错误还请指正。
程序测试输入:1 2 3 -1 -1 4 -1 -1 5 -1 -1 -1 (“-1”输入作为标识符),构建的二叉树结构如下图所示:
程序测试输入:1 2 3 -1 -1 4 -1 -1 5 -1 -1 -1 (“-1”输入作为标识符),构建的二叉树结构如下图所示:
// 20130425.cpp : Defines the entry point for the console application. /*@author: tjssehaige @date: 2012/05/01 @notes: Create binary tree as well as traverse tree by preorder, inorder and postorder @version: 1.0.0 */ // #include "stdafx.h" #include <stdio.h> #include <malloc.h> /*Node structure for binary tree*/ typedef struct node{ int data; /*data field*/ node* left; /*left child pointer*/ node* right; /*right child pointer*/ }BNode, *BTree; /*Create binary tree with numeric input*/ void CreateBinaryTree(BTree& tree){ int inputdata; scanf("%d",&inputdata); if(-1==inputdata){ tree=NULL; }else{ if (!(tree=(BNode*)malloc(sizeof(BNode)))){ return; } /*recursively invoke function CreateBinaryTree*/ tree->data=inputdata; CreateBinaryTree(tree->left); CreateBinaryTree(tree->right); } return; } /*PreOrder Traverse*/ void preorderTraverse(BTree tree){ if (tree!=NULL){ printf("%d ", tree->data); } if (tree->left!=NULL){ preorderTraverse(tree->left); } if (tree->right){ preorderTraverse(tree->right); } } /*InOrder Traverse*/ void inorderTraverse(BTree tree){ if (tree->left!=NULL){ inorderTraverse(tree->left); } if (tree!=NULL){ printf("%d ", tree->data); } if (tree->right!=NULL){ inorderTraverse(tree->right); } } /*PostOrder Traverse*/ void postorderTraverse(BTree tree){ if (tree->left!=NULL){ postorderTraverse(tree->left); } if (tree->right!=NULL){ postorderTraverse(tree->right); } if (tree!=NULL){ printf("%d ", tree->data); } } int _tmain(int argc, _TCHAR* argv[]){ BTree tree; CreateBinaryTree(tree); printf("PreOrder Traverse:"); preorderTraverse(tree); printf("\n"); printf("InOrder Traverse:"); inorderTraverse(tree); printf("\n"); printf("PostOrder Traverse:"); postorderTraverse(tree); printf("\n"); return 0; }
相关文章推荐
- <二叉树 前中后 层序 非递归遍历 c语言实现>
- <二叉树 前中后 层序 非递归遍历 c语言实现>
- 【c语言】构建二叉树并前序遍历
- 根据二叉树的前序遍历和中序遍历构建二叉树的c语言完整代码
- 基于先序遍历和中序遍历序列构建二叉树结构【C语言】
- 二叉树的构建和前中后序遍历
- 二叉树的迭代前中后遍历以及不用栈的遍历C语言
- [java]二叉树构建、遍历、深度、平衡性
- 根据树的前序遍历与中序遍历构建二叉树
- C语言之二叉树(包括遍历的实现)
- 二叉树构建,先序,中序,后序遍历(以及非递归实现),广度优先遍历
- C++类实现二叉树的构建和遍历
- C语言二叉树的层序遍历
- 二叉树的java构建和三种遍历方式
- C语言 二叉树按层打印、深度优先遍历、二叉树是否对称
- 二叉树先序构建+(先序,中序,后序遍历)
- Construct Binary Tree from Preorder and Inorder Traversal 前序和中序遍历构建二叉树
- [C语言]二叉树(建树、是否相等、三种遍历)
- 面试题3:根据先序和中序遍历的结果构建二叉树
- C语言二叉树创建、遍历以及统计结点、叶子结点