二叉树的创建--(4)Copy、Size、Height、Destroy、Equal、Parent
2016-04-20 09:58
363 查看
//Height template <class T> int BinaryTree<T>::Height(Node<T> *subtree) //计算树的高度 { if(subtree==NULL) return 0; int i=Height(subtree->lchild); //左子树高度 int j=Height(subtree->rchild); //右子树高度 return (i>j)?i+1:j+1; //树的高度等于左右子树高度较大值+1(算上根结点) } //Size template <class T> int BinaryTree<T>::Size(Node<T> *subtree) //计算树中结点个数 { return 1+Size(subtree->lchild)+Size(subtree->rchild); //根结点数1+左子树结点个数+右子树结点个数 } //复制构造函数 template <class T> BinaryTree<T>::BinaryTree(BinaryTree<T> &s) //复制构造函数 { root=Copy(s.root); } //Copy template <class T> Node<T>* BinaryTree<T>::Copy(Node<T> *orignode) //复制树 { if(orignode==NULL) return NULL; Node<T> *p=new Node<T>; p->data=orignode->data; //复制根结点 p->lchild=Copy(orignode->lchild); //复制左子树 p->rchild=Copy(orignode->rchild); //复制右子树 return p; } //== 调用equal template <class T> int operator==(const BinaryTree<T> &s,const BinaryTree<T> &t) //公有函数,调用Equal,并传入两树的根结点 { return Equal(s.root,t.root)?true:false; } //Equal template <class T> bool Equal(Node<T> *a,Node<T> *b) { if(a==NULL&&b==NULL) return true; if(a!=NULL&&b!=NULL&&a->data==b->data&&Equal(a->lchild,b->lchild)&&Equal(a->rchild,b->rchild)) //如果a,b不为空,且a,b结点数据相等,且a,b左右子树相等,则返回真 return true; else return false; }
//Parent template <class T> Node<T>* BinaryTree<T>::Parent(Node<T> *subtree,Node<T> *current) //从结点subtree开始搜索,搜索current的父结点并返回 { Node<T> *p; if(subtree==NULL) return NULL; if(subtree->lchild==current||subtree->rchild==current) return subtree; else { p=Parent(subtree->lchild,current); if(p!=NULL) return p; else return Parent(subtree->rchild,current); } }
相关文章推荐
- 淘宝,京东,苏宁易购技术架构(路线)分析和比较
- linux 启动tomcat的问题
- Oliver运维管理系统之一庐山真面目 推荐
- Linux 下 Tomcat JDK 设置
- JVM:内存监控及各区域内存溢出解决
- windows和linux时钟同步
- linux学习——main()函数的用法
- 淘宝应对"双11"的技术架构分析
- CentOS通过bind配置DNS服务器
- QQ空间技术架构之深刻揭秘
- 【转载】Apache日志配置参数详细说明
- 在linux中安装adb和fastboot工具
- Java实现linux的“tail -f”命令
- Vmware复制或克隆Linux系统后找不到eth0的解决方案
- Vmware复制或克隆Linux系统后找不到eth0的解决方案
- iOS 初学者学习网站
- 【linux】linux DD命令
- 配置tomcat将控制台日志输出到指定文件
- SELinux与强制访问控制系统应用
- Linux中Samba详细安装