zoukankan      html  css  js  c++  java
  • 线索二叉树

    线索二叉树

    节点

    struct node
    {
       int val;
       node *left,*right;
       bool lnode,rnode;
       node(){left = NULL,right = NULL,lnode = false,rnode = false;}
    };
    

    构造

    void set_link(node *p,node *&pre)
    {
    	 if(p != NULL)
    	 {
    	 	set_link(p->left,pre);
    	    if(p->left == NULL){
    	    	p->left = pre;
    	    	p->lnode = true;
    		}
    		//printf("%d
    ",p->val);
    		if(pre!=NULL&&pre->right == NULL)
    		{  
    			pre->right = p;
    			pre->rnode = true;
    		}
    		pre = p;
    		set_link(p->right,pre);
    	 }
    }
    void Creat(node *T)
    {
       node *pre = NULL;
       if(T!=NULL)
       {
         set_link(T,pre);
         pre->right = NULL;
         pre->rnode = true;
       }
    }
    

    求中序二叉树的第一个节点

    node *Firstnode(node *p)
    {   
    	while(!p->lnode) p = p->left;
    	return p;
    }
    

    求中序线索二叉树中节点p的后继节点

    node *Nextnode(node *p)
    {
    	if(!p->rnode)
    	  return Firstnode(p->right);
    	return p->right;
    }
    
    
  • 相关阅读:
    数据结构与算法的思维导图
    第九周知识总结
    第八周知识总结
    作业七:问卷调查

    图的基本概念及基本术语
    二叉树

    队列

  • 原文地址:https://www.cnblogs.com/zzuli2sjy/p/7856692.html
Copyright © 2011-2022 走看看