File tree Expand file tree Collapse file tree 2 files changed +82
-0
lines changed Expand file tree Collapse file tree 2 files changed +82
-0
lines changed Original file line number Diff line number Diff line change 1+ #include < stack>
2+
3+ int countNodes (BinaryTreeNode<int > *root) {
4+ if (root == NULL ) {
5+ return 0 ;
6+ }
7+ return countNodes (root -> left) + countNodes (root -> right) + 1 ;
8+ }
9+
10+ void printNodesSumToS (BinaryTreeNode<int > *root, int s) {
11+ if (root == NULL ) {
12+ return ;
13+ }
14+ int totalCount = countNodes (root);
15+ int count = 0 ;
16+ stack<BinaryTreeNode<int >*> inorder;
17+ stack<BinaryTreeNode<int >*> revInorder;
18+ BinaryTreeNode<int > *temp = root;
19+ while (temp != NULL ) {
20+ inorder.push (temp);
21+ temp = temp -> left;
22+ }
23+ temp = root;
24+ while (temp != NULL ) {
25+ revInorder.push (temp);
26+ temp = temp -> right;
27+ }
28+
29+ while (count < totalCount - 1 ) {
30+ BinaryTreeNode<int > *top1 = inorder.top ();
31+ BinaryTreeNode<int > *top2 = revInorder.top ();
32+ if (top1 -> data + top2 -> data == s) {
33+ cout << top1 -> data << " " << top2 -> data << endl;
34+
35+ BinaryTreeNode<int > *top = top1;
36+ inorder.pop ();
37+ count++;
38+ if (top -> right != NULL ) {
39+ top = top -> right;
40+ while (top != NULL ) {
41+ inorder.push (top);
42+ top = top -> left;
43+ }
44+ }
45+
46+ top = top2;
47+ revInorder.pop ();
48+ count++;
49+ if (top -> left != NULL ) {
50+ top = top -> left;
51+ while (top != NULL ) {
52+ revInorder.push (top);
53+ top = top -> right;
54+ }
55+ }
56+ }
57+ else if (top1 -> data + top2 -> data > s) {
58+ BinaryTreeNode<int > *top = top2;
59+ revInorder.pop ();
60+ count++;
61+ if (top -> left != NULL ) {
62+ top = top -> left;
63+ while (top != NULL ) {
64+ revInorder.push (top);
65+ top = top -> right;
66+ }
67+ }
68+ }
69+ else {
70+ BinaryTreeNode<int > *top = top1;
71+ inorder.pop ();
72+ count++;
73+ if (top -> right != NULL ) {
74+ top = top -> right;
75+ while (top != NULL ) {
76+ inorder.push (top);
77+ top = top -> left;
78+ }
79+ }
80+ }
81+ }
82+ }
You can’t perform that action at this time.
0 commit comments