I'm really working hard on improving my BST algorithms and understanding. It hasn't been easy but I've made some progress.
The following is what I came up with before viewing the solutions, and I haven't really fully understood the proposed solutions yet.
It'd be real helpful if someone could point out the shortcomings of this solution, as it does work.
def convertBST(self, root): """ :type root: TreeNode :rtype: TreeNode """ if not root: return stack = [root] vals =  while stack: node = stack.pop(0) vals.append(node.val) if node.right: stack.append(node.right) if node.left: stack.append(node.left) def helper(node, vals): if not node: return node.val += sum([num for num in vals if num > node.val]) helper(node.left, vals) helper(node.right, vals) return node return helper(root, vals) Thank you