⭐ 欢迎来到虫虫下载站! | 📦 资源下载 📁 资源专辑 ℹ️ 关于我们
⭐ 虫虫下载站

📄 bt_main.cpp

📁 这是本人精心搜集的关于常用图论算法的一套源码
💻 CPP
字号:
#include "bt.h"

template <class T> void printAncestors(Binary_tree<T> tree, T& x)   //打印x及其祖先结点
 { typedef  struct{ Binary_node<T>* ptr; int tag;  }StackNode;
   StackNode ST[100];  int i,top = -1 ,find=0; 
   Binary_node<T>* t=tree.GetRoot();	
   if(t->data==x){ cout<<x<<" is Root\n"; return; }  
   while(t && t->data!=x || top!=-1)
     { while(t && t->data != x)	                       //搜索左子树寻找值为x的结点
          {  ST[++top].ptr=t; ST[top].tag=0;t=t->left; } 
       if(t && t->data==x)                                //找到值为x的结点
	   { for(i=0; i<=top; i++) cout<<ST[i].ptr->data<<endl; 
	     cout<<x<<endl;  find=1;
	     break;
	   }
        else                                            //未找到值为x的结点
         { while(top!=-1 && ST[top].tag==1)top--;
           if(top!=-1)                                    //转向右子树
           { ST[top].tag=1;
             t=ST[top].ptr->right;
           }
       }
    } 
  if(!find)cout<<" search "<<x<<" not exists\n"; 
}      
void visit(int &i)
 { cout<<i<<' '; }
void visitchar(char &c)
 { cout<<c<<' '; }

void main(void)
{ Binary_tree<int> b;   int x;
  cout<<"input integer create Binary_tree(0_end!)  "; cin>>x;
  while(x)
   { b.insert(x); cin>>x; }
  cout<<"Binary_tree B Recursive PreOrder is\t";
  b.preorder(visit); cout<<endl;
  cout<<"Binary_tree B Recursive InOrder is\t";
  b.inorder(visit); cout<<endl;  
  cout<<"\ninput Search Node val ";  cin>>x;
  cout<<"\n Search Node && ancestors is :\n";
  printAncestors(b,x);
   
  Binary_tree<char> a('0');    char y;
  cout<<"\n\ninput char create Binary tree('0' empty subtree!)  "; 
  a.CreatBinary_tree();
  cout<<"Binary_tree  A Recursive InOrder is\t";
  a.inorder(visitchar); cout<<endl;
  cout<<"Binary_tree  A Recursive PostOrder is\t";
  a.postorder(visitchar); cout<<endl;
  cout<<"\ninput Search Node val ";  cin>>y;
  cout<<"\n Search Node && ancestors is :\n";
  printAncestors(a,y);

}   

⌨️ 快捷键说明

复制代码 Ctrl + C
搜索代码 Ctrl + F
全屏模式 F11
切换主题 Ctrl + Shift + D
显示快捷键 ?
增大字号 Ctrl + =
减小字号 Ctrl + -