Data Structure Binary Tree: Populate Inorder Successor for all nodes

http://www.geeksforgeeks.org/populate-inorder-successor-for-all-nodes/

 1 #include <iostream>

 2 #include <vector>

 3 #include <algorithm>

 4 #include <queue>

 5 #include <stack>

 6 #include <string>

 7 #include <fstream>

 8 using namespace std;

 9 

10 struct node {

11     int data;

12     struct node *left, *right, *next;

13     node() : data(0), left(NULL), right(NULL), next(NULL) { }

14     node(int d) : data(d), left(NULL), right(NULL), next(NULL) { }

15 };

16 

17 void populate(node *root) {

18     static node *next = NULL;

19     if (!root) return;

20     populate(root->right);

21     root->next = next;

22     next = root;

23     populate(root->left);

24 }

25 

26 int main() {

27     node *root = new node(10);

28     root->left = new node(8);

29     root->right = new node(12);

30     root->left->left = new node(3);

31     populate(root);

32     cout << root->data << "->" << (root->next? root->next->data : -1) << endl;

33     cout << root->left->data << "->" << (root->left->next? root->left->next->data : -1) << endl;

34     cout << root->right->data << "->" << (root->right->next? root->right->next->data : -1) << endl;

35     cout << root->left->left->data << "->" << (root->left->left->next? root->left->left->next->data : -1) << endl;

36     return 0;

37 }

 

你可能感兴趣的:(binary)