永发信息网

C++: 编写一算法,实现在中序线索二叉树上进行逆中序遍历.

答案:2  悬赏:10  手机版
解决时间 2021-02-07 22:20
  • 提问者网友:蓝琪梦莎
  • 2021-02-07 05:15
C++: 编写一算法,实现在中序线索二叉树上进行逆中序遍历.
最佳答案
  • 五星知识达人网友:风格不统一
  • 2021-02-07 06:29
要实现本题的要求,首先要创建一棵二叉树,该二叉树的创建策略其实就是搜索二叉树的创建原则,当数组元素大于节点元素时,则数组元素应插在当前节点的右分支上,若当前节点的右儿子为空,直接插入,否则一次依次往下比较;当数组元素小于当前节点元素时,应当将其插在当前节点的左分支上,若当前节点的左儿子为空,则直接插入,否则依次比较下去直至找到插入的位置。
在创建好二叉树以后,便要对二叉树进行线索化,根据二叉树线索化的思想,在中序线索化的过程中,对于内节点,其前驱节点是其左子树的最右结点,其后继结点是右子树的最左节点;对于叶子节点,最左儿子的前驱为空,而最右叶子节点的后继结点为空。
线索化以后,则需对其进行中序遍历,然后对其进行输出即可
全部回答
  • 1楼网友:玩世
  • 2021-02-07 06:35
#include using namespace std; struct node{ int data; node *lchild; node *rchild; }; class tree{ private: int k; node *root; node *current; public: tree(){ root=null; current=root; k=0; } void creat_tree(node **t);//这是用指针的方法来实现的。所以修改了一下参数形式。 void display1() {preorder(root); cout<>i; if(i!=0){ node *h=new node;//新建节点 h->data=i; *t=h; if(k==0)//如果是根节点 root=*t; k++; creat_tree(&(*t)->lchild);//参数做了相应改变 creat_tree(&(*t)->rchild);//参数做了相应改变 } else //i=0时为空节点 *t=null; } void tree::preorder(node *temp){ //这是先序遍历二叉树,采用了递归的方法。 if(temp!=null){ cout<data<<" "; preorder(temp->lchild); preorder(temp->rchild); } } void tree::inorder(node *temp){ //这是中序遍历二叉树,采用了递归的方法。 if(temp!=null){ inorder(temp->lchild); cout<data<<" "; inorder(temp->rchild); } } void tree::postorder(node *temp){ //这是后序遍历二叉树,采用了递归的方法。 if(temp!=null){ postorder(temp->lchild); postorder(temp->rchild); cout<data<<" "; } } void main(){ tree a; cout<<"input"<
我要举报
如以上回答内容为低俗、色情、不良、暴力、侵权、涉及违法等信息,可以点下面链接进行举报!
点此我要举报以上问答信息
大家都在看
推荐资讯