二叉查找树(Binary Search Tree),(又:二叉搜索树,二叉排序树)它或者是一棵空树,或者是具有下列性质的二叉树: 若它的左子树不空,则左子树上所有结点的值均小于它的根结点的值; 若它的右子树不空,则右子树上所有结点的值均大于它的根结点的值; 它的左、右子树也分别为二叉排序树。
——百度百科
1.先序遍历二叉搜索树,可以得到一个升序列表,列表中的元素是它的节点值。
class TreeNode(object):def __init__(self, val=0, left=None, right=None):self.val = valself.left = leftself.right = rightclass Solution(object):def inorderTraversal(self, root, ans):if not root: return None# 遍历左子树self.inorderTraversal(root.left, ans)# 访问节点ans += [root.val]# 遍历右子树self.inorderTraversal(root.right, ans)return anstest4 = TreeNode(1)
test2 = TreeNode(2, test4, None)
test3 = TreeNode(5)
test1 = TreeNode(4, test2, test3)
print(Solution().inorderTraversal(root=test1, ans=[]))
# 输出 [1, 2, 4, 5]