#include <iostream>
#include <stack>
using namespace std;
struct node
{
int data;
struct node* left;
struct node* right;
};
node* newNode(int data)
{
node* node1 = new node;
node1->data = data;
node1->left = NULL;
node1->right = NULL;
return(node1);
}
/* Driver program to test above functions*/
void InorderTraverse(node *root)
{
if(root)
{
InorderTraverse(root->left);
cout << root->data<<" -> ";
InorderTraverse(root->right);
}
}
void InorderTraverse2(node *root)
{
if(root == NULL) return;
stack<node *> stk;
while(!stk.empty() || root)
{
while(root)
{
stk.push(root);
root=root->left;
}
if(!stk.empty())
{
node *tmp = stk.top();
cout << tmp->data << "->";
stk.pop();
root = tmp->right;
}
}
}
int main()
{
struct node *root = newNode(4);
root->left = newNode(2);
root->right = newNode(5);
root->left->left = newNode(1);
root->left->right = newNode(3);
/*if(isBST(root))
printf("Is BST");
else
printf("Not a BST");
getchar();*/
InorderTraverse2(root);
InorderTraverse(root);
return 0;
}
Inorder - Tree - traverse - recursive and not recursive
最新推荐文章于 2023-07-29 01:49:56 发布