C Program
#include <stdio.h> #include <stdlib.h> typedef struct N { int d; struct N *l, *r; } N; N* n(int d) { N* t = malloc(sizeof(N)); t->d = d; t->l = t->r = NULL; return t; } void inv(N* r) { if (!r) return; N* t = r->l; r->l = r->r; r->r = t; inv(r->l); inv(r->r); } void pre(N* r) { if (!r) return; printf("%d ", r->d); pre(r->l); pre(r->r); } int main() { N* r = n(1); r->l = n(2); r->r = n(3); pre(r); printf("\n"); inv(r); pre(r); }
C Output
Input Tree (Preorder):
1 2 3
Inverted Tree (Preorder):
1 3 2
C++ Program
#include <iostream> using namespace std; struct N { int d; N *l, *r; N(int v): d(v), l(0), r(0) {} }; void inv(N* r) { if (!r) return; swap(r->l, r->r); inv(r->l); inv(r->r); } void pre(N* r) { if (!r) return; cout << r->d << " "; pre(r->l); pre(r->r); } int main() { N* r = new N(4); r->l = new N(2); r->r = new N(7); pre(r); cout << endl; inv(r); pre(r); }
C++ Output
Input Tree (Preorder):
4 2 7
Inverted Tree (Preorder):
4 7 2
JAVA Program
class N { int d; N l, r; N(int d) { this.d = d; } } public class Main { static void inv(N r) { if (r == null) return; N t = r.l; r.l = r.r; r.r = t; inv(r.l); inv(r.r); } static void pre(N r) { if (r == null) return; System.out.print(r.d + " "); pre(r.l); pre(r.r); } public static void main(String[] a) { N r = new N(10); r.l = new N(5); r.r = new N(15); pre(r); System.out.println(); inv(r); pre(r); } }
JAVA Output
Input Tree (Preorder):
10 5 15
Inverted Tree (Preorder):
10 15 5
Python Program
class N: def __init__(s, d): s.d, s.l, s.r = d, None, None def inv(r): if r: r.l, r.r = inv(r.r), inv(r.l) return r def pre(r): if r: print(r.d, end=' '); pre(r.l); pre(r.r) r = N(6) r.l = N(3); r.r = N(8) pre(r); print() inv(r) pre(r)
Python Output
Input Tree (Preorder):
6 3 8
Inverted Tree (Preorder):
6 8 3
In-Depth Learning – Entire Concept in Paragraphs
Social Plugin