C++ 二叉树创建、遍历访问、删除
来源:互联网 发布:seo软件下载 编辑:程序博客网 时间:2024/06/06 11:34
代码包含:二叉树数组创建(前序)、前序、中序、后序遍历、节点访问、删除
代码说明:该代码使用模板建立,一些地方并未完善,比如array[index]==-1,仅仅使用于数字类型,如果二叉树存储的是char或string,需在这之前判断类型,给予特定的空标识,对于节点的访问,使用一个函数指针传递对节点的操作,删除只能使用后序遍历的方式
#include<iostream>using namespace std;template <typename T>struct Node{T data;Node<T>* left;Node<T>* right;};template <typename T>void Create(Node<T>*& node,T array[],int& index,int& length){if(index>=length||array[index]==-1){node=0; }else{node=new Node<T>();node->data=array[index];Create(node->left,array,++index,length);Create(node->right,array,++index,length);}}template <typename T>void PreOrderTraversal(Node<T>*& node,void(*func)(Node<T>*& arg)){if(node!=0){if(func!=0){func(node);}PreOrderTraversal(node->left,func);PreOrderTraversal(node->right,func);}}template <typename T>void InOrderTraversal(Node<T>*& node,void(*func)(Node<T>*& arg)){if(node!=0){InOrderTraversal(node->left,func);if(func!=0){func(node);}InOrderTraversal(node->right,func);}}template <typename T>void PostOrderTraversal(Node<T>*& node,void(*func)(Node<T>*& arg)){if(node!=0){PostOrderTraversal(node->left,func);PostOrderTraversal(node->right,func);if(func!=0){func(node);}}}template <typename T>void Delete(Node<T>*& node){delete node;}template <typename T>void Show(Node<T>*& node){cout<<node->data<<endl;}/*125346*/int main(){void(*Delegate)(Node<int>*& arg);Delegate=0;int array[]={1,2,3,-1,-1,4,-1,-1,5,6,-1,-1,-1}; Node<int>* tree;int index=0;int length=sizeof(array)/sizeof(array[0]);Create(tree,array,index,length);Delegate=Show; InOrderTraversal(tree,Delegate);Delegate=Delete;PostOrderTraversal(tree,Delegate);return 0;}
0 0
- C++ 二叉树创建、遍历访问、删除
- C++ 二叉树创建、遍历访问、删除
- 二叉查找树之创建,遍历,删除
- 二叉树的创建和遍历、删除
- c语言二叉树创建及遍历
- 二叉树遍历访问
- 纯C创建二叉树及二叉树的遍历
- 二叉搜索树的创建、遍历、插入、删除(C++版本)
- 二叉树的创建,遍历,查找,删除,插入,修改
- Java实现二叉树的创建、删除、遍历
- 二叉搜索树常用算法(创建,遍历,插入,删除)
- 二叉树 创建 遍历!!!
- 二叉排序的创建,删除,遍历,查找
- 平衡二叉树(遍历,插入,删除)的C实现
- 二叉树的创建、遍历及搜索(C实现)
- C,C++创建二叉树,以及3种遍历
- 二叉树创建、遍历、求深度--C语言实现
- 二叉树的创建与遍历(C语言实现)
- 等价二叉树
- 257. Binary Tree Paths
- ScrollView和listView嵌套使用
- TOMCAT JAVA_HOME or JRE_HOME environment variable is not defined correctly
- 理解RESTful架构
- C++ 二叉树创建、遍历访问、删除
- Leetcode 437. Path Sum III
- caffe训练提示top blob 'data' produced multiple sour解决办法
- FZU1062 NBUT1225
- Tomcat 优化方案 和 配置详解
- (四)频繁插入和删除时使用LinkedList
- 自定义View的知识点
- Spring3 MVC 注解(一)---注解基本配置及@controller和 @RequestMapping 常用解释
- #对象数组#集合