二叉查找树-前序遍历

  1. 前序遍历
    1. 源码
    2. 算法分析

前序遍历

源码

递归

#include<iostream>
#include<stack>
#include<queue>
//节点结构体
struct Node{
    int value;
    Node * left;
    Node * right;
    Node(int value):value(value),left(NULL),right(NULL){}
};
//构建二叉树
void insertNode(Node *node,int value){
    if(value<=node->value){
        if(!node->left){
            node->left=new Node(value);
        }
        else{
            inertNode(node->left,value);
        }
    }
    else{
        if(!node->right){
            node->right=new Node(value);
        }
        else{
            inertNode(node->right,value);
        }
    }
}
//前序遍历递归实现
void preOrder(Node *node){
    if(node){
        std::cout<<node->value;
        preOrder(node->left);
        preOrder(node->right);
    }

}
//前序遍历非递归实现
void preOrder1(Node *node){
    if(node==NULL){
        return;
    }
    std::stack<Node *> nstack;
    nstack.push(node);
    while(!nstack.empty()){
        Node *temp=nstack.top();
        std::cout<<temp->value;
        nstack.pop();
        if(temp->right){
            nstack.push(temp->right);
        }
        if(temp->left){
            nstack.push(temp->left);
        }
    }

}

算法分析

信息

  1. 递归遍历顺序: 根节点->左子树->右子树
  2. 非递归:使用栈,先输出根节点,然后压栈:右子树 -> 左子树

转载请注明来源,欢迎对文章中的引用来源进行考证,欢迎指出任何有错误或不够清晰的表达。可以在下面评论区评论,也可以邮件至 876208453@qq.com

文章标题:二叉查找树-前序遍历

本文作者:Cai Jun

发布时间:2019-02-26, 15:14:33

最后更新:2019-02-26, 02:20:53

原始链接:http://johncaijun.github.io/2019-02-27-二叉查找树-前序遍历/

版权声明: "署名-非商用-相同方式共享 4.0" 转载请保留原文链接及作者。

目录
×

喜欢就点赞,疼爱就打赏