
Data Structure
Networking
RDBMS
Operating System
Java
MS Excel
iOS
HTML
CSS
Android
Python
C Programming
C++
C#
MongoDB
MySQL
Javascript
PHP
- Selected Reading
- UPSC IAS Exams Notes
- Developer's Best Practices
- Questions and Answers
- Effective Resume Writing
- HR Interview Questions
- Computer Glossary
- Who is Who
Construct Binary Search Tree from Preorder Traversal in Python
Suppose we have to create a binary search tree that matches the given preorder traversal. So if the pre-order traversal is like [8,5,1,7,10,12], then the output will be [8,5,10,1,7,null,12], so the tree will be −
To solve this, we will follow these steps −
- root := 0th node of the preorder traversal list
- stack := a stack, and push root into the stack
- for each element i from the second element of the preorder list
- i := a node with value i
- if value of i < top of the stack top element, then
- left of stack top node := i
- insert i into the stack
- otherwise
- while stack is not empty, and stack top element value < value of i
- last := top of stack
- pop element from stack
- right of the last node := i
- insert i into the stack
- while stack is not empty, and stack top element value < value of i
- return root
Let us see the following implementation to get better understanding −
Example
class Solution(object): def bstFromPreorder(self, preorder): """ :type preorder: List[int] :rtype: TreeNode """ root = TreeNode(preorder[0]) stack = [root] for i in preorder[1:]: i = TreeNode(i) if i.val<stack[-1].val: stack[-1].left = i stack.append(i) else: while stack and stack[-1].val<i.val: last = stack.pop(-1) last.right = i stack.append(i) return root
Input
[8,5,1,7,10,12]
Output
[8,5,10,1,7,null,12]
Advertisements