新聞中心
在python二叉樹中如何為每個節(jié)點關(guān)聯(lián)其右相鄰節(jié)點,相信很多沒有經(jīng)驗的人對此束手無策,為此本文總結(jié)了問題出現(xiàn)的原因和解決方法,通過這篇文章希望你能解決這個問題。
如果用C描述的話,就是一個二叉樹節(jié)點定義包括右節(jié)點指針,左節(jié)點指針,和右相連指針;給出一個二叉樹,維護其右相鄰指針,如果是最右邊節(jié)點,則指針為空。
struct Node {
int val;
Node *left;
Node *right;
Node *next;
}
思路其實很簡單,這個可以按層分析二叉樹,首先把當前層節(jié)點按照從左到右放入一個隊列中,遍歷這個隊列;如果不是隊列最后一個節(jié)點,則按照當前節(jié)點的next就是下一個節(jié)點;同時把每一個節(jié)點的子節(jié)點按照從左到右放入下一層隊列;然后 遍歷下一層隊列;直到這個隊列為空,遍歷完成。
代碼如下:
""" # Definition for a Node. class Node: def __init__(self, val: int = 0, left: 'Node' = None, right: 'Node' = None, next: 'Node' = None): self.val = val self.left = left self.right = right self.next = next """ class Solution: def connect(self, root: 'Node') -> 'Node': if root == None: return None else: nodeList = [] nodeList.append(root) while nodeList != []: nextList = [] for i in range(len(nodeList)): if nodeList[i].left != None: nextList.append(nodeList[i].left) if nodeList[i].right != None: nextList.append(nodeList[i].right) if i!= len(nodeList)-1: nodeList[i].next = nodeList[i+1] nodeList = nextList return root
看完上述內(nèi)容,你們掌握在python二叉樹中如何為每個節(jié)點關(guān)聯(lián)其右相鄰節(jié)點的方法了嗎?如果還想學到更多技能或想了解更多相關(guān)內(nèi)容,歡迎關(guān)注創(chuàng)新互聯(lián)-成都網(wǎng)站建設公司行業(yè)資訊頻道,感謝各位的閱讀!
文章標題:在python二叉樹中如何為每個節(jié)點關(guān)聯(lián)其右相鄰節(jié)點-創(chuàng)新互聯(lián)
文章來源:http://www.dlmjj.cn/article/dihdjh.html