码迷,mamicode.com
首页 > 其他好文 > 详细

【数据结构】二叉树遍历

时间:2014-05-17 21:56:50      阅读:264      评论:0      收藏:0      [点我收藏+]

标签:style   blog   class   code   c   java   

先序遍历和中序遍历非递归代码:

bubuko.com,布布扣
#include <iostream>
#include <vector>
using namespace std;

typedef struct BinaryTree 
{
    int data;
    struct BinaryTree *rchild, *lchild;
}BinaryTree;

int createBinaryTree( BinaryTree * &T)  //必须用引用 因为内存是在函数里面分配的
{
        int ch;
        scanf("%d", &ch);

        if(ch != 0)
        {
            T = (BinaryTree *)malloc(sizeof(BinaryTree));
            T->data = ch;
            createBinaryTree(T->lchild);
            createBinaryTree(T->rchild);
        }
        else
        {
            T = NULL;
        }
    return 0;
}

int visit(int data)
{
    printf("%d ", data);
    return 0;
}


int PreOrderTraverse(BinaryTree T) //先序遍历  
{
    BinaryTree* p;
    vector<BinaryTree *> Stack;
    Stack.push_back(&T);
    while(!Stack.empty())
    {
        while((p = Stack.back()) != NULL) 
        {
            visit(p->data);
            Stack.push_back(p->lchild);
        }
        Stack.pop_back();
        if(!Stack.empty())
        {
            p = Stack.back(); 
            Stack.pop_back();
            Stack.push_back(p->rchild);
        }
    }
    return 0;
}


int InOrderTraverse(BinaryTree T) //中序遍历
{
    BinaryTree* p;
    vector<BinaryTree *> Stack;
    Stack.push_back(&T);
    while(!Stack.empty())
    {
        while((p = Stack.back()) != NULL) 
            Stack.push_back(p->lchild);
        Stack.pop_back();
        if(!Stack.empty())
        {
            p = Stack.back(); 
            Stack.pop_back();
            visit(p->data);
            Stack.push_back(p->rchild);
        }

    }
    return 0;
}

int main()
{
    BinaryTree * T = NULL;
    createBinaryTree(T);
    PreOrderTraverse(*T);
    InOrderTraverse(*T);
    return 0;
}
bubuko.com,布布扣

注意理清楚弹栈的机制。

【数据结构】二叉树遍历,布布扣,bubuko.com

【数据结构】二叉树遍历

标签:style   blog   class   code   c   java   

原文地址:http://www.cnblogs.com/dplearning/p/3732745.html

(0)
(0)
   
举报
评论 一句话评论(0
登录后才能评论!
© 2014 mamicode.com 版权所有  联系我们:gaon5@hotmail.com
迷上了代码!