二叉树的创建和遍历、删除
2017-10-16 08:29
197 查看
#include <stdio.h> #include <malloc.h> typedef struct BinaryTreeNode { struct BinaryTreeNode *pLeft; struct BinaryTreeNode *pRight; int mValue; }BINARYTREENODE; void CreateBinaryTree(BinaryTreeNode **pRoot) { int value = 0; printf("Please Input a None Zero Value : "); scanf("%d",&value); printf("Value = %d\n",value); if(value == 0) { *pRoot = NULL; return; } else { *pRoot = (BINARYTREENODE *)malloc(sizeof(BINARYTREENODE)); printf("*pRoot = %x\n",*pRoot); printf("*pRoot = %x\n",pRoot); (*pRoot)->mValue = value; CreateBinaryTree(&((*pRoot)->pLeft)); CreateBinaryTree(&((*pRoot)->pRight)); } } void DeleteBinaryTree(BINARYTREENODE ** pRoot) { if ((*pRoot)->pLeft == NULL && (*pRoot)->pRight == NULL) { printf("Delete Node is %d\n",(*pRoot)->mValue); *pRoot = NULL; free(*pRoot); return; } else { DeleteBinaryTree(&((*pRoot)->pLeft)); DeleteBinaryTree(&((*pRoot)->pRight)); } } void ShowBinaryTree(BINARYTREENODE * pRoot) { if (NULL!=pRoot) { printf("%d ",pRoot->mValue); } } void PerOrder(BINARYTREENODE * pRoot) { if (NULL!=pRoot) { ShowBinaryTree(pRoot); PerOrder(pRoot->pLeft); PerOrder(pRoot->pRight); } } void InOrder(BINARYTREENODE * pRoot) { if (NULL!=pRoot) { InOrder(pRoot->pLeft); ShowBinaryTree(pRoot); InOrder(pRoot->pRight); } } void PostOrder(BINARYTREENODE * pRoot) { if (NULL!=pRoot) { PostOrder(pRoot->pLeft); PostOrder(pRoot->pRight); ShowBinaryTree(pRoot); } } int main() { BINARYTREENODE * pRoot = NULL; CreateBinaryTree(&pRoot); printf("%x\n",pRoot); printf("Find All Pre Order of Binary Tree : "); PerOrder(pRoot); printf("\n"); printf("Find All In Order of Binary Tree : "); InOrder(pRoot); printf("\n"); printf("Find All Post Order of Binary Tree : "); PostOrder(pRoot); printf("\n"); printf("Before Delete %x\n",pRoot); while (pRoot!=NULL) { DeleteBinaryTree(&pRoot); } printf("After Delete %x\n",pRoot); }
相关文章推荐
- 二叉树的创建,遍历,查找,删除,插入,修改
- 数据结构二叉树的java实现,包括二叉树的创建、搜索、删除和遍历
- javascript实现二叉树的创建,遍历,添加,查找最大值最小值和指定值的寻找及删除功能——递归的多次运用
- 数据结构与算法分析学习笔记--第四章(二叉树:创建、递归遍历、非递归遍历、根据数据删除结点等)
- Java实现二叉树的创建、删除、遍历
- C++ 二叉树创建、遍历访问、删除
- 二叉树的存储,创建,以及四种遍历,删除
- C++ 二叉树(创建,遍历,查找,插入,删除)『菜鸟版』
- 二叉树的创建,插入,删除,输出,求高度,求度以及三种遍历方式实现
- C++ 二叉树创建、遍历访问、删除
- 二叉树创建、删除、(递归/非递归)先序(中序/后序)遍历
- 二叉树与其基本递归操作:创建、遍历、特征量计算等
- 一个关于二叉树的创建、先序遍历、中序遍历、后序遍历、求叶子节点的完整函数的c语言完整程序。
- oc之可变字典创建 添加 删除 遍历
- 二叉树创建及遍历算法(递归及非递归)
- C语言中,链表的创建,插入,删除,遍历,求链表长度,排序等
- 二叉树的创建、前序遍历、中序遍历、后序遍历
- NSSet 集合创建,获取,遍历,可变集合的删除 - iOS
- Java创建二叉树及其遍历的递归和非递归实现
- 二叉树的创建,先序、中序、后序遍历的递归实现以及层序遍历