您的位置:首页 > 其它

Data Structure Binary Tree: Inorder Tree Traversal without recursion and without stack!

2014-03-28 10:55 447 查看
http://www.geeksforgeeks.org/inorder-tree-traversal-without-recursion-and-without-stack/

#include <iostream>
#include <vector>
#include <algorithm>
#include <queue>
#include <stack>
#include <string>
#include <fstream>
using namespace std;

struct node {
int data;
struct node *left, *right;
node() : data(0), left(NULL), right(NULL) { }
node(int d) : data(d), left(NULL), right(NULL) { }
};

void print(node *root) {
if (!root) return;
node *cur = root;
while (cur) {
if (!cur->left) {
cout << cur->data << " ";
cur = cur->right;
}
else {
node *pre = cur->left;
while (pre->right && pre->right != cur) pre = pre->right;
if (pre->right == NULL) {
pre->right = cur;
cur = cur->left;
}
else {
pre->right = NULL;
cout << cur->data << " ";
cur = cur->right;
}
}
}
}

void prints(node *root) {
if (!root) return;
prints(root->left);
cout << root->data << " ";
prints(root->right);
}

int main() {
node* root = new node(1);
root->left = new node(2);
root->right = new node(3);
root->left->left = new node(4);
root->left->right = new node(5);
print(root);
return 0;
}
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: 
相关文章推荐