
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
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