1、/void TreeNote/TreeNoteNote=new T(con);Left=NULL;Right=NULL;#endif/Binarytree.h#ifndef _BRINARYTREE_H_#define _BRINARYTREE_H_#include treenote.hstackvectorclass Tclass BrinaryTree TreeNote* Root; vector NoteCan;/用?STL的时候要a注意a加上 using namespace std BrinaryTree(); BrinaryTree(); void pull(T & temp); b
2、ool search(T& ser);* MyRoot()return Root; /递Y归实现? void show_pre(TreeNote* Root,ofstream& void show_in(TreeNote void show_post(TreeNote /栈? void show_pre_Base(ofstream& void show_in_base(ofstream& void show_post_base(ofstream&bool BrinaryTreesearch( T& ser ) int p=0; for (int i=1;iNote=ser) NoteCani-
3、Note-visit(); p=1; break; return p;/* 后序遍历的非递 1 这a个?由于不?能准确判D断?是否已经-遍过y父?节点 所以在压1栈?就a压1入指?针?,a直接压1入当访问过y节 将?置?空?若两都?则该?可出?栈? 实 压1根 滑?向左有D左孩子压1左 若无T, 指?滑?顶右边同为a空?元a素?弹再次 循-环至且*/遍算?法2/ while()/ 一直最 用 for函数y/ while(前便利 无T有D孩或者?刚?过y)/ / 则 并 找一根另外a的记?录?个?过y的/ 如果?return/ 弹/ / 否入/ void BrinaryTreeRoot;* pr
4、e=this- stackLeft!=NULL) tempNoteCan.push(iterator);iterator=iterator-Left; while(iterator!=NULL&(iterator-Right=NULL)|(iterator-Right=pre) iterator-show(out); pre=iterator; if (tempNoteCan.empty() return; iterator=tempNoteCan.top(); tempNoteCan.pop(); tempNoteCan.push(iterator); iterator=iterator-R
5、ight;show_in_base( ofstream& while (iterator!=NULL|!tempNoteCan.empty() if (iterator! if (iterator- tempNoteCan.push(iterator); iterator=iterator- else iterator- if (! iterator=tempNoteCan.top(); tempNoteCan.pop(); iterator- iterator=iterator- else iterator=NULL; else iterator=iterator-show_pre_Base
6、( ofstream&Right! tempNoteCan.push(iterator-Right); elseBrinaryTree1) TreeNote* temp; temp=NoteCan.back(); NoteCan.erase(NoteCan.begin()+NoteCan.size()-1); delete temp;show_post( TreeNoteLeft,out);Right,out); Root-show_in( TreeNoteshow_pre( TreeNotepull( T & temp ) if (!search(temp) * newNote=new TreeNote2) if (NoteCan.size()-1)%2=1) NoteCan(NoteCan.size()-1)/2-Right=newNote; elseLeft=newNote; this-Root=newNote;BrinaryTree() / 第位?* pp=NULL; NoteCan.push_back(pp);
copyright@ 2008-2022 冰豆网网站版权所有
经营许可证编号:鄂ICP备2022015515号-1