博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
5)二叉树[3]求所有结点到根节点的路径
阅读量:5824 次
发布时间:2019-06-18

本文共 2266 字,大约阅读时间需要 7 分钟。

1 #include "iostream"  2 using namespace std;  3   4 typedef char type;  5 struct bnode{  6     type data;  7     type parent;  8     bnode *lchild,*rchild;  9 }; 10  11 class tree{ 12 public: 13     tree();//初始化 14     ~tree(); 15     void create_tree(bnode *&T);//建立二叉树 16     void parent(bnode *&T,bnode *root);//求二叉树所有结点的父节点 17     bnode *pa(bnode *p,bnode *T);//求结点p的父节点 18     void path(bnode *p,bnode *root);//结点p到根节点的路径 19     void all_path(bnode *T,bnode *root); 20 private: 21     bool flags; 22     bnode *temp; 23 }; 24  25 tree::tree()//初始化 26 { 27     temp = new bnode; 28     temp = NULL; 29     flags = true; 30 } 31  32 void tree::create_tree(bnode *&T)//建立二叉树 33 { 34     type x; 35     cin>>x; 36     if(x=='#')T=NULL; 37     else { 38         T = new bnode; 39         T->data = x; 40         T->parent='#'; 41         create_tree(T->lchild);//建立左子树 42         create_tree(T->rchild);//建立右子树 43     } 44 } 45  46 bnode *tree::pa(bnode *p,bnode *T) 47 { 48     if(flags&&T) 49     { 50         if(T->lchild==p||T->rchild==p)//父节点找到,终止递归 51         { 52             flags = false; 53             temp = T; 54         }else{ 55             pa(p,T->lchild);//在左子树中寻找 56             pa(p,T->rchild);//在右子树中寻找 57              58         } 59     } 60     return temp; 61 } 62  63 void tree::parent(bnode *&T,bnode *root) 64 { 65     if(T) 66     { 67         if(T->parent=='#') 68         { 69             if(pa(T,root))//如果父节点存在 70             { 71                 T->parent = pa(T,root)->data; 72                 temp = NULL; 73             } 74         } 75         //cout<<"Pannel point:"<
data<<",parent:"<
parent<
lchild,root); 78 parent(T->rchild,root); 79 80 } 81 82 } 83 84 void tree::path(bnode *p,bnode *root) 85 { 86 cout<<"["<
data<<"->"<
data<<"]:"; 87 cout<
data<<" "; 88 while(p->parent!='#') 89 { 90 p =pa(p,root); 91 temp = NULL; 92 flags = true; 93 cout<
data<<" "; 94 } 95 cout<
lchild,root);104 all_path(T->rchild,root);105 }106 }107 tree::~tree(){}108 109 int main()110 {111 tree Tree;112 bnode *T;113 cout<<"Create Tree['#'表示空节点]:"<

转载于:https://www.cnblogs.com/minmsy/p/5030687.html

你可能感兴趣的文章
[ACM] hdu 5045 Contest (减少国家Dp)
查看>>
新浪微博——点击按钮自动加关注代码
查看>>
hdu 3790 (最短路径问题dijkstra)
查看>>
Android SystemUI源代码分析和修改
查看>>
热12应建议网站模板(免费下载点)
查看>>
【MongoDB】在windows平台mongodb切片集群(三)
查看>>
MVC5 - ASP.NET Identity登录原理 - Claims-based认证和OWIN -摘自网络
查看>>
[CareerCup] 3.7 Adopt Animal 领养动物
查看>>
php -- memcached 内存缓存
查看>>
推荐他们认为有用Sublime Text3小工具
查看>>
去掉ExpandableListView的箭头图标
查看>>
SpringMVC之五:自定义DispatcherServlet配置及配置额外的 servlets 和 filters
查看>>
Socket Class中文解释
查看>>
导出文本pdf文件
查看>>
Openstack本学习笔记——Neutron-server服务加载和启动源代码分析(三)
查看>>
C语言动态走迷宫
查看>>
ContentProvider中的数据库的生成时机以及ContentResolver的insert()方法总结
查看>>
允许Ubuntu14.04&quot;保存&quot;屏幕亮度值
查看>>
便利的操作plist文件
查看>>
oracle trunc 函数处理日期格式,日期类型很有用的几个sql
查看>>