二叉树的创建--(4)Copy、Size、Height、Destroy、Equal、Parent
来源:互联网 发布:linux nano编辑器 编辑:程序博客网 时间:2024/05/10 06:29
//Heighttemplate <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(算上根结点)}//Sizetemplate <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);}//Copytemplate <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;}//== 调用equaltemplate <class T>int operator==(const BinaryTree<T> &s,const BinaryTree<T> &t) //公有函数,调用Equal,并传入两树的根结点{ return Equal(s.root,t.root)?true:false;}//Equaltemplate <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;}
//Parenttemplate <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); }}
0 0
- 二叉树的创建--(4)Copy、Size、Height、Destroy、Equal、Parent
- 二叉树的高度 - 父节点序列 Find Height of Binary Tree by Parent Array
- font-size 和 line-height 的含义
- 求二叉树的高度/销毁一颗二叉树-->Destroy(Node* root)
- Equal Height Blocks in Rows(统一行中的块的高度)
- css中font的简写方法(包括font-weight,font-size,line-height,font-family)
- 13.1 Copy, Assign, and Destroy
- 二叉树的创建
- 二叉树的创建
- 二叉树的创建。
- 二叉树的创建
- 二叉树的创建
- 二叉树的创建
- 二叉树的创建
- 二叉树的创建
- 二叉树的创建
- 二叉树的 创建
- 二叉树的创建
- 电脑截屏 截快捷菜单图 截二级菜单图
- C#调用银联接口 posinf.dll方法调用
- 报表设计--坐标实例-位移坐标
- MySQL基本函数
- MFC控件学习
- 二叉树的创建--(4)Copy、Size、Height、Destroy、Equal、Parent
- 好有趣的一个画面——年轻夫妻与小儿子
- 去除notepad++内容中的时间
- android中自定义控件之TitleBar实现
- FPGA第一篇:SRAM工作原理
- 游戏术语笔记
- curator
- OSG学习笔记1——智能指针
- partial class 在ORM中使用局部类,可以自动生成的代码和自己写的代码分开