- Data Structure
- Networking
- RDBMS
- Operating System
- Java
- MS Excel
- iOS
- HTML
- CSS
- Android
- Python
- C Programming
- C++
- C#
- MongoDB
- MySQL
- Javascript
- PHP
- Physics
- Chemistry
- Biology
- Mathematics
- English
- Economics
- Psychology
- Social Studies
- Fashion Studies
- Legal Studies
- 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