使用Python查詢二叉樹中右側節點的程式
假設我們提供了一棵二叉樹。我們還給出了一個指向節點(名為“u”)的指標,我們必須找到位於所提供節點右側的節點。位於給定節點右側的節點必須位於同一級別,並且給定節點可以是葉節點或內部節點。
因此,如果輸入如下所示:

並且u = 6,則輸出為8。
位於節點6右側的節點是節點8,因此將值8返回給我們。
為了解決這個問題,我們將遵循以下步驟:
如果根為空,則
返回null
dq := 一個新的雙端佇列
將根插入dq的末尾
當dq不為空時,執行以下操作
dq_size := dq的大小
temp := 一個新的列表
index := -1
對於範圍0到dq_size中的每個值,執行以下操作:
node := 從dq刪除最後一個元素
如果node的左子節點不為空,則
將node的左子節點新增到dq的末尾
如果node的右子節點不為空,則
將node的右子節點新增到dq的末尾
將node插入temp的末尾
如果node與u相同,則
index := temp的大小 - 1
如果index與temp的大小 - 1相同,則
返回null
如果index > -1,則
返回temp[index + 1]
返回null
讓我們看一下以下實現,以便更好地理解:
示例
from queue import deque class TreeNode: def __init__(self, val=0, left=None, right=None): self.val = val self.left = left self.right = right def insert(temp,data): que = [] que.append(temp) while (len(que)): temp = que[0] que.pop(0) if (not temp.left): if data is not None: temp.left = TreeNode(data) else: temp.left = TreeNode(0) break else: que.append(temp.left) if (not temp.right): if data is not None: temp.right = TreeNode(data) else: temp.right = TreeNode(0) break else: que.append(temp.right) def make_tree(elements): Tree = TreeNode(elements[0]) for element in elements[1:]: insert(Tree, element) return Tree def search_node(root, element): if (root == None): return None if (root.val == element): return root res1 = search_node(root.left, element) if res1: return res1 res2 = search_node(root.right, element) return res2 def solve(root, u): if not root: return None dq = deque() dq.append(root) while dq: dq_size = len(dq) temp = [] index = -1 for _ in range(dq_size): node = dq.pop() if node.left: dq.appendleft(node.left) if node.right: dq.appendleft(node.right) temp.append(node) if node == u: index = len(temp) - 1 if index == len(temp) - 1: return None if index > -1: return temp[index + 1] return None root = make_tree([5, 3, 7, 2, 4, 6, 8]) u = search_node(root,6) ret = solve(root, u) print(ret.val)
輸入
root = make_tree([5, 3, 7, 2, 4, 6, 8]) u = search_node(root,6)
輸出
8
廣告
資料結構
網路
關係資料庫管理系統 (RDBMS)
作業系統
Java
iOS
HTML
CSS
Android
Python
C語言程式設計
C++
C#
MongoDB
MySQL
Javascript
PHP