在线索二叉树中找前驱和后继(C语言)

阅读: 评论:0

在线索二叉树中找前驱和后继(C语言)

在线索二叉树中找前驱和后继(C语言)

一、线索二叉树找前驱和后继

(一)中序线索二叉树

1. 中序线索二叉树找中序后继

//找到以P为根的子树中,第一个被中序遍历的结点
ThreadNode *Firstnode(ThreadNode *p){//循环找到最左下结点(不一定是叶结点)while(p-> == 0) p=p->lchild;return p;
}
//在中序线索二叉树中找到结点p的后继结点
ThreadNode *Nextnode(ThreadNode *p){//右子树最左下结点if(p->rtag == 0) return Firstnode(p->rchild);else return p->rchild;//rtag==1直接返回后继线索
}//对中序线索二叉树进行中序遍历(利用线索实现的非递归算法)
void Inorder(ThreadNode *T){for(ThreadNode *p = Firstnode(T);p!=NULL;p=Nextnode(p))visit(p);
}
  • 空间复杂度:O(1)

2. 中序线索二叉树找中序前驱

//找到以P为根的子树中,最后一个被中序遍历的结点
ThreadNode *Lastnode(ThreadNode *p){//循环找到最右下结点(不一定是叶结点)while(p->rtag == 0) p = p->rchild;return p;
}
//在中序线索二叉树中找到结点p的前驱结点
ThreadNode *Prenode(ThreadNode *p){//左子树中最右下结点if(p->ltag == 0) return Lastnode(p -> lchild);else return p->lchild;//ltag==1直接返回前驱线索
}//对中序线索二叉树进行逆向中序遍历
void RevInorder(ThreadNode *T){for(ThreadNode *p = LastNode(T); p!=NULL ; p=Prenode(p))visit(p);
}

(二)先序线索二叉树

1. 先序线索二叉树找先序后继

2. 先序线索二叉树找先序前驱


(三)后序线索二叉树

1. 后序线索二叉树找后序前驱

2. 后序线索二叉树找后序后继



本文发布于:2024-01-29 17:45:20,感谢您对本站的认可!

本文链接:https://www.4u4v.net/it/170652152717185.html

版权声明:本站内容均来自互联网,仅供演示用,请勿用于商业和其他非法用途。如果侵犯了您的权益请与我们联系,我们将在24小时内删除。

标签:前驱   中找   线索   语言   二叉树
留言与评论(共有 0 条评论)
   
验证码:

Copyright ©2019-2022 Comsenz Inc.Powered by ©

网站地图1 网站地图2 网站地图3 网站地图4 网站地图5 网站地图6 网站地图7 网站地图8 网站地图9 网站地图10 网站地图11 网站地图12 网站地图13 网站地图14 网站地图15 网站地图16 网站地图17 网站地图18 网站地图19 网站地图20 网站地图21 网站地图22/a> 网站地图23