程序師世界是廣大編程愛好者互助、分享、學習的平台,程序師世界有你更精彩!
首頁
編程語言
C語言|JAVA編程
Python編程
網頁編程
ASP編程|PHP編程
JSP編程
數據庫知識
MYSQL數據庫|SqlServer數據庫
Oracle數據庫|DB2數據庫
 程式師世界 >> 編程語言 >> C語言 >> C++ >> C++入門知識 >> [leetcode]Populating Next Right Pointers in Each Node @ Python [邏輯動力學]

[leetcode]Populating Next Right Pointers in Each Node @ Python [邏輯動力學]

編輯:C++入門知識

[leetcode]Populating Next Right Pointers in Each Node @ Python [邏輯動力學]


題意:            1        /  \       2    3      / \  / \     4  5  6  7 變為:          1 -> NULL        /  \       2 -> 3 -> NULL      / \  / \     4->5->6->7 -> NULL 解題思路:這道題目充分展現了宏觀和微觀完美的在細節出水乳交融的具體過程.   1) 看到二叉樹我們就想到需要使用遞歸的思路了。   2) 注意遞歸之外的細節:正式這些細節完成了實際的邏輯求解   我們以2號結點為例:為了繁衍next結點,僅需要處理兩種微觀情況:   case 1:  2 -> 3 :     Solution:       root.left.next  = root.right       case 2:  2 -> 5 -> 6:     Solution:       root.right.next = root.next.left if root.next else None            2 -> 3      / \  /      4->5->6   Solution 1: 這個方法是因為我無法記住網絡上提供(比如下面的solution 2)的答案,然後就按照遞歸需要解決的基本問題 (也就是上面case 1 和 2),分別解決後,拼湊出來的解法。萬歲! 結果我這個解法相當自然。 復制代碼 class Solution:     # @param root, a tree node     # @return nothing     def connect(self, root):         def recursion(root):             if root is None: return             if root.left and root.right: root.left.next = root.right;              if root.right and root.next: root.right.next = root.next.left             recursion(root.left)             recursion(root.right)         recursion(root) 復制代碼 Solution 2:       復制代碼 # Definition for a  binary tree node # class TreeNode: #     def __init__(self, x): #         self.val = x #         self.left = None #         self.right = None #         self.next = None   class Solution:     # @param root, a tree node     # @return nothing     def connect(self, root):         if root and root.left:             root.left.next  = root.right             root.right.next = root.next.left if root.next else None             self.connect(root.left)             self.connect(root.right)

  1. 上一頁:
  2. 下一頁:
Copyright © 程式師世界 All Rights Reserved