# Data Structures: Question Set – 22

#### What is a binary tree, and how does it differ from a binary search tree?

A binary tree is a tree data structure in which each node has at most two children, referred to as the left child and the right child. A binary search tree is a binary tree in which the values of the nodes in the left subtree are less than the value of the root node, and the values of the nodes in the right subtree are greater than the value of the root node.

#### What is a complete binary tree, and how does it differ from a full binary tree?

A complete binary tree is a binary tree in which every level, except possibly the last, is completely filled, and all nodes are as far left as possible. A full binary tree is a binary tree in which every node has either 0 or 2 children.

#### What is a balanced binary tree, and why is it important?

A balanced binary tree is a binary tree in which the height of the left and right subtrees of every node differs by at most 1. A balanced binary tree is important because it ensures that the tree remains efficient for search and insertion operations. Unbalanced binary trees can become skewed, causing search and insertion operations to take much longer than in a balanced binary tree.

#### What is a binary tree traversal, and what are the different types of traversal?

A binary tree traversal is the process of visiting each node in a binary tree exactly once. There are three main types of binary tree traversal:

In-order traversal: In an in-order traversal, the left subtree is visited first, then the current node is visited, and finally the right subtree is visited.

Pre-order traversal: In a pre-order traversal, the current node is visited first, then the left subtree is visited, and finally the right subtree is visited.

Post-order traversal: In a post-order traversal, the left subtree is visited first, then the right subtree is visited, and finally the current node is visited.

#### What is a binary tree search, and how is it performed?

A binary tree search is the process of searching for a specific value in a binary tree. To perform a binary tree search, the value being searched for is compared to the value of the current node. If the value being searched for is less than the value of the current node, the left subtree is searched. If the value being searched for is greater than the value of the current node, the right subtree is searched. This process is repeated until the value is found or it is determined that the value does not exist in the tree.

#### What is a binary heap, and what are its properties?

A binary heap is a binary tree data structure that is used to implement priority queues. A binary heap is a complete binary tree, meaning that every level, except possibly the last, is completely filled, and all nodes are as far left as possible. A binary heap also satisfies the heap property, which states that for a max heap, every parent node has a value greater than or equal to the values of its children nodes, and for a min heap, every parent node has a value less than or equal to the values of its children nodes.

#### What is an AVL tree?

An AVL tree is a self-balancing binary search tree in which the heights of the left and right subtrees of any node differ by at most one.

#### What is the height of an AVL tree?

The height of an AVL tree is the maximum number of edges from the root node to a leaf node.

#### What is the time complexity of searching, inserting, and deleting a node in an AVL tree?

The time complexity of searching, inserting, and deleting a node in an AVL tree is O(log n), where n is the number of nodes in the tree.

#### How is the balance factor of a node in an AVL tree defined?

The balance factor of a node in an AVL tree is defined as the difference between the height of its left subtree and the height of its right subtree.