Given a binary tree, find the vertical width of the binary tree. The width of a binary tree is the number of vertical paths.
In this image, the tree contains 6 vertical lines which are the required width of the tree.
Input : 7 / \ 6 5 / \ / \ 4 3 2 1 Output : 5 Input : 1 / \ 2 3 / \ / \ 4 5 6 7 \ \ 8 9 Output : 6
Approach : Take inorder traversal and then take a temporary variable if we go left then temp value decreases and if go to right then temp value increases. Assert a condition in this, if the minimum is greater than temp, then minimum = temp and if maximum less then temp then maximum = temp. In the end, print minimum + maximum which is the vertical width of the tree.
# Python3 program to prvertical width
# of a tree
# class to create a new tree node
def __init__(self, data):
self.data = data
self.left = self.right = None
# get vertical width
def lengthUtil(root, maximum, minimum, curr = 0):
if (root == None):
# traverse left
minimum, curr – 1)
# if curr is decrease then get
# value in minimum
if (minimum > curr):
minimum = curr
# if curr is increase then get
# value in maximum
if (maximum < curr): maximum = curr # traverse right lengthUtil(root.right, maximum, minimum, curr + 1) def getLength(root): maximum =  minimum =  lengthUtil(root, maximum, minimum, 0) # 1 is added to include root in the width return (abs(minimum) + maximum) + 1 # Driver Code if __name__ == '__main__': root = newNode(7) root.left = newNode(6) root.right = newNode(5) root.left.left = newNode(4) root.left.right = newNode(3) root.right.left = newNode(2) root.right.right = newNode(1) print(getLength(root)) # This code is contributed by PranchalK [tabbyending]
Time Complexity: O(n)
Auxiliary Space: O(h) where h is the height of the binary tree. This much space is needed for recursive calls.
- Vertical width of Binary tree | Set 2
- Vertical Sum in a given Binary Tree | Set 1
- Maximum width of a binary tree
- Print a Binary Tree in Vertical Order | Set 1
- Find maximum vertical sum in binary tree
- Vertical Sum in Binary Tree | Set 2 (Space Optimized)
- Find if given vertical level of binary tree is sorted or not
- Print a Binary Tree in Vertical Order | Set 2 (Map based Method)
- Print a Binary Tree in Vertical Order | Set 3 (Using Level Order Traversal)
- Complexity of different operations in Binary tree, Binary Search Tree and AVL tree
- Minimum swap required to convert binary tree to binary search tree
- Check whether a binary tree is a full binary tree or not | Iterative Approach
- Convert a Binary Tree to Threaded binary tree | Set 1 (Using Queue)
- Convert a Binary Tree to Threaded binary tree | Set 2 (Efficient)
- Binary Tree to Binary Search Tree Conversion using STL set
If you like GeeksforGeeks and would like to contribute, you can also write an article using contribute.geeksforgeeks.org or mail your article to firstname.lastname@example.org. See your article appearing on the GeeksforGeeks main page and help other Geeks.
Please Improve this article if you find anything incorrect by clicking on the "Improve Article" button below.
Improved By : PranchalK