1. 程式人生 > 實用技巧 >1759. 二叉樹的結點

1759. 二叉樹的結點

1759.二叉樹的結點

中文English

給出一棵二叉樹,返回其節點數。

樣例

樣例 1:

輸入:
{1,#,2,3}
   1
    \
     2
    /
   3
輸出:
3

樣例 2:

輸入:
{1,2,3}
   1
  / \
 2   3
輸出:
3
輸入測試資料(每行一個引數)如何理解測試資料?

遞迴寫法:

"""
Definition of TreeNode:
class TreeNode:
    def __init__(self, val):
        self.val = val
        self.left, self.right 
= None, None """ class Solution: """ @param root: the root of the binary tree @return: the number of nodes """ def __init__(self): self.visted = set() def getAns(self, root): # Write your code here if not root: return 0 if id(root) not in
self.visted: self.visted.add(id(root)) self.getAns(root.left) self.getAns(root.right) return len(self.visted)

非遞迴寫法:

"""
Definition of TreeNode:
class TreeNode:
    def __init__(self, val):
        self.val = val
        self.left, self.right 
= None, None """ class Solution: """ @param root: the root of the binary tree @return: the number of nodes """ def getAns(self, root): # Write your code here #非遞迴寫法 if not root: return 0 stack = [root] visted = set() while stack: pop_node = stack.pop() if id(pop_node) not in visted: visted.add(id(pop_node)) if pop_node.left: stack.append(pop_node.left) if pop_node.right: stack.append(pop_node.right) return len(visted)