二叉查找树-前序遍历
前序遍历
源码
递归
#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);
}
}
}
算法分析
信息
- 递归遍历顺序: 根节点->左子树->右子树
- 非递归:使用栈,先输出根节点,然后压栈:右子树 -> 左子树
转载请注明来源,欢迎对文章中的引用来源进行考证,欢迎指出任何有错误或不够清晰的表达。可以在下面评论区评论,也可以邮件至 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" 转载请保留原文链接及作者。