You are on page 1of 7

PROGRAM TREE

PROGRAM 1
Program 1 ini membuat binaru tree.
Hasil program jika dituliskan dalam bentuk tree.

Bentuk tree dari hasil program yaitu tree yang berbentuk horizontal.

// ProgTree2.cpp : Defines the entry point for the console application.


//

#include "stdafx.h"
#include <iostream>
#include <conio.h>
#include <stdio.h>
#include <stdlib.h>

using namespace std;

#define COUNT 10

// A binary tree node


class Node
{
public:
int data;
Node* left, *right;

/* Constructor that allocates a new node with the


given data and NULL left and right pointers. */
Node(int data){
this->data = data;
this->left = NULL;
this->right = NULL;
}
};

// Function to print binary tree in 2D


// It does reverse inorder traversal
void print2DUtil(Node *root, int space)
{
// Base case
if (root == NULL)
return;

// Increase distance between levels


space += COUNT;

// Process right child first


print2DUtil(root->right, space);

// Print current node after space


// count
cout << endl;
for (int i = COUNT; i < space; i++)
cout << " ";
cout << root->data << "\n";

// Process left child


print2DUtil(root->left, space);
}

// Wrapper over print2DUtil()


void print2D(Node *root)
{
// Pass initial space count as 0
print2DUtil(root, 0);
}

// Driver code
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);
root->right->left = new Node(6);
root->right->right = new Node(7);

root->left->left->left = new Node(8);


root->left->left->right = new Node(9);
root->left->right->left = new Node(10);
root->left->right->right = new Node(11);
root->right->left->left = new Node(12);
root->right->left->right = new Node(13);
root->right->right->left = new Node(14);
root->right->right->right = new Node(15);

print2D(root);

_getch();
}

PROGRAM 2

Program 2 ini untuk menghitung ukuran tree.


Gambar tree berikut ini mempunyai ukuran 5.

// ProgTree3.cpp : Defines the entry point for the console application.


//

#include "stdafx.h"
#include <iostream>
#include <conio.h>
#include <stdio.h>
#include <stdlib.h>

using namespace std;

/* A binary tree node has data, pointer to left child


and a pointer to right child */
class node
{
public:
int data;
node* left;
node* right;
};

/* Helper function that allocates a new node with the


given data and NULL left and right pointers. */
node* newNode(int data)
{
node* Node = new node();
Node->data = data;
Node->left = NULL;
Node->right = NULL;

return(Node);
}

/* Computes the number of nodes in a tree. */


int size(node* node)
{
if (node == NULL)
return 0;
else
return(size(node->left) + 1 + size(node->right));
}

/* Driver code*/
int main()
{
node *root = newNode(1);
root->left = newNode(2);
root->right = newNode(3);
root->left->left = newNode(4);
root->left->right = newNode(5);

cout << "Size of the tree is " << size(root);


_getch();
}

PROGRAM 3
Program 3 ini untuk menghitung ketinggian tree.
Gambar di bawah ini mempunyai ketinggian 3. Untuk node root tidak dihitung.
// ProgTree4.cpp : Defines the entry point for the console application.
//

#include "stdafx.h"
#include <iostream>
#include <conio.h>
#include <stdio.h>
#include <stdlib.h>

using namespace std;

/* A binary tree node has data, pointer to left child


and a pointer to right child */
class node
{
public:
int data;
node* left;
node* right;
};

/* Compute the "maxDepth" of a tree -- the number of


nodes along the longest path from the root node
down to the farthest leaf node.*/
int maxDepth(node* node)
{
if (node == NULL)
return 0;
else
{
/* compute the depth of each subtree */
int lDepth = maxDepth(node->left);
int rDepth = maxDepth(node->right);

/* use the larger one */


if (lDepth > rDepth)
return(lDepth + 1);
else return(rDepth + 1);
}
}

/* Helper function that allocates a new node with the


given data and NULL left and right pointers. */
node* newNode(int data)
{
node* Node = new node();
Node->data = data;
Node->left = NULL;
Node->right = NULL;
return(Node);
}

// Driver code
int main()
{
node *root = newNode(1);

root->left = newNode(2);
root->right = newNode(3);
root->left->left = newNode(4);
root->left->right = newNode(5);

cout << "Height of tree is " << maxDepth(root);


_getch();
}

PROGRAM 4

Program 4 ini menampilkan data dari gambar di bawah ini berdasarkan inorder, preorder, dan
postorder :

// ProgTree1.cpp : Defines the entry point for the console application.


//

#include "stdafx.h"
#include <iostream>
#include <conio.h>
#include <stdio.h>
#include <stdlib.h>

using namespace std;

/* A binary tree node has data, pointer to left child


and a pointer to right child */
struct Node {
int data;
struct Node *left, *right;
Node(int data)
{
this->data = data;
left = right = NULL;
}
};

/* Given a binary tree, print its nodes according to the


"bottom-up" postorder traversal. */
void printPostorder(struct Node* node)
{
if (node == NULL)
return;

// first recur on left subtree


printPostorder(node->left);

// then recur on right subtree


printPostorder(node->right);

// now deal with the node


cout << node->data << " ";
}

/* Given a binary tree, print its nodes in inorder*/


void printInorder(struct Node* node)
{
if (node == NULL)
return;

/* first recur on left child */


printInorder(node->left);

/* then print the data of node */


cout << node->data << " ";

/* now recur on right child */


printInorder(node->right);
}

/* Given a binary tree, print its nodes in preorder*/


void printPreorder(struct Node* node)
{
if (node == NULL)
return;

/* first print data of node */


cout << node->data << " ";

/* then recur on left sutree */


printPreorder(node->left);

/* now recur on right subtree */


printPreorder(node->right);
}

/* Driver program to test above functions*/


int main()
{
struct 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);

cout << "\nPreorder traversal of binary tree is \n";


printPreorder(root);

cout << "\nInorder traversal of binary tree is \n";


printInorder(root);

cout << "\nPostorder traversal of binary tree is \n";


printPostorder(root);

_getch();
}

You might also like