how to draw a binary tree in matlab

A binary tree is a data structure in which every node or vertex has at most two children. In Python, a binary tree can be represented in different ways with different data structures(dictionary, list) and class representations for a node. However, binarytree library helps to directly implement a binary tree. It also supports heap and binary search tree(BST). This module does not come pre-installed with Python's standard utility module. To install it type the below command in the terminal.

pip install binarytree        

Creating Node

The node class represents the structure of a particular node in the binary tree. The attributes of this class are values, left, right.

Syntax: binarytree.Node(value, left=None, right=None)
Parameters:
value: Contains the data for a node. This value must be number.
left: Contains the details of left node child.
right: Contains details of the right node child.

Note: If left or right child node is not an instance of binarytree.Node class then binarytree.exceptions.NodeTypeError is raised and if the node value is not a number then binarytree.exceptions.NodeValueError is raised.
Example:

Python3

from binarytree import Node

root = Node( 3 )

root.left = Node( 6 )

root.right = Node( 8 )

print ( 'Binary tree :' , root)

print ( 'List of nodes :' , list (root))

print ( 'Inorder of nodes :' , root.inorder)

print ( 'Size of tree :' , root.size)

print ( 'Height of tree :' , root.height)

print ( 'Properties of tree : \n' , root.properties)

Output:

Binary tree :
3
/ \
6 8
List of nodes : [Node(3), Node(6), Node(8)]
Inorder of nodes : [Node(6), Node(3), Node(8)]
Size of tree : 3
Height of tree : 1
Properties of tree :
{'height': 1, 'size': 3, 'is_max_heap': False, 'is_min_heap': True, 'is_perfect': True, 'is_strict': True, 'is_complete': True, 'leaf_count': 2, 'min_node_value': 3, 'max_node_value': 8, 'min_leaf_depth': 1, 'max_leaf_depth': 1, 'is_bst': False, 'is_balanced': True, 'is_symmetric': False}

Build a binary tree from the List:

Instead of using the Node method repeatedly, we can use build() method to convert a list of values into a binary tree.
Here, a given list contains the nodes of tree such that the element at index i has its left child at index 2*i+1, the right child at index 2*i+2 and parent at (i – 1)//2. The elements at index j for j>len(list)//2 are leaf nodes. None indicates the absence of a node at that index. We can also get the list of nodes back after building a binary tree using values attribute.

Syntax: binarytree.build(values)
Parameters:
values: List representation of the binary tree.
Returns: root of the binary tree.

Example:

Python3

from binarytree import build

nodes = [ 3 , 6 , 8 , 2 , 11 , None , 13 ]

binary_tree = build(nodes)

print ( 'Binary tree from list :\n' ,

binary_tree)

print ( '\nList from binary tree :' ,

binary_tree.values)

Output:

          Binary tree from list :                                          ___3                      /    \                      6      8                      / \      \          2   11     13          List from binary tree : [3, 6, 8, 2, 11, None, 13]        

Build a random binary tree:

tree() generates a random binary tree and returns its root node.

Syntax: binarytree.tree(height=3, is_perfect=False)
Parameters:
height: It is the height of the tree and its value can be between the range 0-9 (inclusive)
is_perfect: If set True a perfect binary is created.
Returns: Root node of the binary tree.

Example:

Python3

from binarytree import tree

root = tree()

print ( "Binary tree of any height :" )

print (root)

root2 = tree(height = 2 )

print ( "Binary tree of given height :" )

print (root2)

root3 = tree(height = 2 ,

is_perfect = True )

print ( "Perfect binary tree of given height :" )

print (root3)

Output:

          Binary tree of any height :                      14____                      /      \                      2        5__                      /        /   \                      6        1     13                      /        /     /  \          7        9     4    8          Binary tree of given height :                      1__                      /   \          5     2                      / \                      4   3          Perfect binary tree of given height :                      __3__                      /     \                      2       4                      / \     / \          6   0   1   5        

Building a BST:

The binary search tree is a special type of tree data structure whose inorder gives a sorted list of nodes or vertices. In Python, we can directly create a BST object using binarytree module. bst() generates a random binary search tree and return its root node.

Syntax: binarytree.bst(height=3, is_perfect=False)
Parameters:
height: It is the height of the tree and its value can be between the range 0-9 (inclusive)
is_perfect: If set True a perfect binary is created.
Returns: Root node of the BST.

Example:

Python3

from binarytree import bst

root = bst()

print ( 'BST of any height : \n' ,

root)

root2 = bst(height = 2 )

print ( 'BST of given height : \n' ,

root2)

root3 = bst(height = 2 ,

is_perfect = True )

print ( 'Perfect BST of given height : \n' ,

root3)

Output:

          BST of any height :                                                    ____9______                      /           \                      __5__       ____12___                      /     \     /         \                      2       8   10         _14                      / \     /      \       /          1   4   7        11    13          BST of given height :                                                    5                      / \                      4   6                      /          3          Perfect BST of given height :                                                    __3__                      /     \                      1       5                      / \     / \          0   2   4   6        

Importing heap:

Heap is a tree data structure that can be of two types –

  • max heap
  • min heap

Using the heap() method of binarytree library, we can generate a random maxheap and return its root node. To generate minheap, we need to set the is_max attribute as False.

Syntax: binarytree.heap(height=3, is_max=True, is_perfect=False)
Parameters:
height: It is the height of the tree and its value can be between the range 0-9 (inclusive)
is_max: If set True generates a max heap else min heap.
is_perfect: If set True a perfect binary is created.
Returns: Root node of the heap.

Python3

from binarytree import heap

root = heap()

print ( 'Max-heap of any height : \n' ,

root)

root2 = heap(height = 2 )

print ( 'Max-heap of given height : \n' ,

root2)

root3 = heap(height = 2 ,

is_max = False ,

is_perfect = True )

print ( 'Perfect min-heap of given height : \n' ,

root3)

Output:

          Max-heap of any height :                                                    _______14______                      /               \                      ___12__            __13__                      /       \          /      \                      10        8        3        9                      /  \      / \      / \      /          1    5    4   6    0   2    7          Max-heap of given height :                                                    __6__                      /     \                      4       5                      / \     / \          2   0   1   3          Perfect min-heap of given height :                                                    __0__                      /     \                      1       3                      / \     / \          2   6   4   5        

gutierrezthimsellaid1983.blogspot.com

Source: https://www.geeksforgeeks.org/binarytree-module-in-python/

0 Response to "how to draw a binary tree in matlab"

Post a Comment

Iklan Atas Artikel

Iklan Tengah Artikel 1

Iklan Tengah Artikel 2

Iklan Bawah Artikel