二叉树的遍历

简介: 二叉树的遍历

什么是遍历?

按照某种规则把所欲结点都访问一遍

树的遍历

先/中/后遍历:基于树的递归特性确定的次序规则

二叉树的递归特性

  1. 要么是个空二叉树
  2. 要么就是由“根结点+左子树+右子树”组成的二叉树

序遍历:左右(NLR)
序遍历:根右(LNR)
序遍历:右根(LRN)

C语言代码实现

typedef struct BiTNode{
    int data;
    struct BiTNode *lchild,*rchild; 
}BiTNode,*BiTree;

void InitTree(BiTree T,int m){
    T = (BiTree)malloc(sizeof(BiTNode));
    T->data = m;
    T->lchild = NULL;
    T->rchild = NULL;
}

void visit(BiTree T){
    printf("%d\t",T->data);
}

//前序遍历
void PreOrder(BiTree T){
    if(T!=NULL){
        visit(T);
        PreOrder(T->lchild);
        PreOrder(T->rchild);
    }
}

//中序遍历
void InOrder(BiTree T){
    if(T!=NULL){
        InOrder(T->lchild);
        visit(T);
        InOrder(T->rchild);
    }
}

//后序遍历
void PostOrder(BiTree T){
    if(T!=NULL){
        PostOrder(T->lchild);
        PostOrder(T->rchild);
        visit(T);
    }
}
相关文章
|
6月前
|
Python
二叉树前中后序遍历
这段内容是关于二叉树的前序、中序和后序遍历的Python实现。`Solution`类包含三个方法:`preorderTraversal`、`inorderTraversal`和`postorderTraversal`,分别返回二叉树节点值的前序、中序和后序遍历列表。每个方法都是递归的,遍历顺序为:前序(根-左-右)、中序(左-根-右)、后序(左-右-根)。
59 4
|
6月前
二叉树遍历及应用
二叉树遍历及应用
77 0
|
6月前
|
算法
带你深入理解二叉树的遍历
带你深入理解二叉树的遍历
|
6月前
【二叉树遍历和练习】
【二叉树遍历和练习】
56 0
|
算法
25 二叉树的遍历
25 二叉树的遍历
28 0
【二叉树OJ题(二)】前序遍历&&中序遍历&&后序遍历&&另一颗树的子树&&二叉树遍历&&平衡二叉树(上)
【二叉树OJ题(二)】前序遍历&&中序遍历&&后序遍历&&另一颗树的子树&&二叉树遍历&&平衡二叉树(上)
|
存储 搜索推荐
【二叉树OJ题(二)】前序遍历&&中序遍历&&后序遍历&&另一颗树的子树&&二叉树遍历&&平衡二叉树(下)
【二叉树OJ题(二)】前序遍历&&中序遍历&&后序遍历&&另一颗树的子树&&二叉树遍历&&平衡二叉树(下)
|
存储
二叉树的遍历问题
二叉树的遍历问题