首页 > 其他 > 详细

线索二叉树的递归创建法以及二叉树的深度计算方法

时间:2020-05-29 18:12:59      阅读:37      评论:0      收藏:0      [点我收藏+]

线索二叉树又可以成为穿线二叉树,创建其目的在于能使遍历更加方便

#include <stdio.h>
#include<stdlib.h>
#define MAXSIZE 10
typedef struct node{
    int data;
    int ltag;
    int rtag;
    struct node *left;
    struct node *right;
}Node;
typedef struct
{
    Node *root;
}Tree;
void insert(Tree *tree,int value)
{
    Node *node=(Node *)malloc(sizeof(Node));
    node->data=value;
    node->left=NULL;
    node->ltag=0;
    node->right=NULL;
    node->rtag=0;
    
    if(tree->root==NULL)
    {
        tree->root=node;
    }
    else
    {
        Node *temp=tree->root;
        while(temp!=NULL)
        {
            if(value<temp->data)
            {
                if(temp->left==NULL)
                {
                    temp->left=node;
                    break;
                }
                else
                    temp=temp->left;
            }
            if(value>temp->data)
            {
                if(temp->right==NULL)
                {
                    temp->right=node;
                    break;
                }
                else
                    temp=temp->right;
            }
        }
    }
}

int depth(Node *node)
{
    if(node==NULL)
        return 0;
   else
   {
       int ld=depth(node->left);
       int rd=depth(node->right);
       return (ld>rd?ld:rd)+1;
   }
}
void inthread(Node *p,Node *pre)
{
    if(p!=NULL)
    {
        inthread(p->left,pre);
        if(p->left==NULL)
        {
            p->ltag=1;
            p->left=pre;
        }
        
        if(pre!=NULL&&pre->right==NULL)
        {
            pre->rtag=1;
            pre->right=p;
        }
        pre=p;
        inthread(p->right, pre);
    }
}

int main()
{
    Tree tree;
    tree.root=NULL;
    int arr[7]={4,3,5,6,1,2,7};
    int n=7;
    for(int i=0;i<n;i++)
        insert(&tree,arr[i]);

    int len=depth(tree.root);
    printf("length=%d\t",len);
    
    printf("\n");
    Node *pre=NULL;
    inthread(tree.root, pre);
}

 

线索二叉树的递归创建法以及二叉树的深度计算方法

原文:https://www.cnblogs.com/oldfish123/p/12988749.html

(0)
(0)
   
举报
评论 一句话评论(0
关于我们 - 联系我们 - 留言反馈 - 联系我们:wmxa8@hotmail.com
© 2014 bubuko.com 版权所有
打开技术之扣,分享程序人生!