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