题目分析: 每个节点需要移动的次数是 子节点需要移动的+当前的个数-1
Then, the number of moves we make from this node to and from its children is abs(dfs(node.left)) + abs(dfs(node.right))
class TreeNode(object):
def __init__(self, x):
self.val = x
self.left = None
self.right = None
class Solution(object):
def sortedArrayToBST(self, root):
self.ans = 0
def dfs(node):
if not node:
return 0
L, R = dfs(node.left), dfs(node.right)
self.ans += abs(L) + abs(R)
return node.val + L + R - 1
dfs(root)
return self.ans