- Trending Categories
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
Program to find sibling value of a binary tree node in Python
Suppose we have a value k and a binary search tree, here each node is either a leaf or contains 2 children. We have to find the node containing the value k, and return its sibling's value.
So, if the input is like
k = 4., then the output will be 10.
To solve this, we will follow these steps −
Define a function util() . This will take root, k, ans
if left of root is not null and right of root is not null, then
return
if k > value of root, then
if value of right of root is same as k, then
insert value of left of root at the end of ans
return
otherwise,
util(right of root, k, ans)
if k < value of root, then
if value of right of root is same as k, then
insert value of right of root at the end of ans
return
otherwise,
util(left of root, k, ans)
From the main method, do the following −
ans := a new list
util(root, k, ans)
return ans[0]
Let us see the following implementation to get better understanding −
Example
class TreeNode: def __init__(self, data, left = None, right = None): self.val = data self.left = left self.right = right def util(root, k, ans): if root.left is None and root.right is None: return if k > root.val: if root.right.val == k: ans.append(root.left.val) return else: util(root.right, k, ans) if k < root.val: if root.left.val == k: ans.append(root.right.val) return else: util(root.left, k, ans) class Solution: def solve(self, root, k): ans = [] util(root, k, ans) return ans[0] root = TreeNode(6) root.left = TreeNode(4) root.right = TreeNode(10) root.left.left = TreeNode(3) root.left.right = TreeNode(5) ob1 = Solution() print(ob1.solve(root, 4))
Input
root = TreeNode(6) root.left = TreeNode(4) root.right = TreeNode(10) root.left.left = TreeNode(3) root.left.right = TreeNode(5) 4
Output
10