【Data Structure】Tree

Recently I am learning tree, which is a bit tricky foe me. So I decide to keep the log to record some basic steps of it.

Binary Tree

typedef struct TreeNode *Tree;
struct TreeNode
{
	int Element;
	Tree->Left;
	Tree->Right;
};

traversal

level-order traversal
  • Tree list[100]; //record the tree
  • int current=0;// the current node;
  • int node=0; //the total node;
void Level_order ( Tree T, void (*visit)(Tree ThisNode) )
{
    int current=0,node=0;//node:the number of node/p:point to the current node
    Tree list[100];
    if(T)
    {
        list[node++]=T;
    }
    while(current<node)
    {
        if(list[current]->Left)//not t->left
        {
            list[node++]=list[current]->Left;
        }
           if(list[current]->Right)
        {
            list[node++]=list[current]->Right;
        }
        visit(list[current++]);  
    }
}
pre-order traversal

void preorder(Tree t)
{
    if(t)
    {
        printf("%d ",t->Element);
        preorder(t->Left);
        preorder(t->Right);
    }
}

void postorder(Tree t)
{
    if(t)
    {
        preorder(t->Left);
        preorder(t->Right);
        printf("%d ",t->Element);
    }
}

void inorder(Tree t)
{
    if(t)
    {
        preorder(t->Left);
        printf("%d ",t->Element);
        preorder(t->Right);
    }
}

建立n个节点的BST
一次性建立不能用自顶向下的递归
插入可以递归
二叉树(左右儿子有序)都可以用同构判相同

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值