# 动态二叉树的节点
class Node:
    Node *parent
    Node *left
    Node *right
    key

# 动态二叉树
class BinaryTree: 
    Node *root

    insert(data):
        Node *x ← root   # 从根节点开始搜索
        Node *y ← NULL   # x 的父节点

        # 确定新节点的父节点
        while x ≠ NULL:
            y ← x # 设置父节点
            if data < x.key:
                x ← x.left    # 移动到左子节点
            else:
                x ← x.right   # 移动到右子节点

        # 生成节点,设置指针
        Node *z ← 生成节点
        z.key ← data
        z.left ← NULL
        z.right ← NULL
        z.parent ← y

        if y = NULL: # 树为空的情况
            root ← z
        else if z.key < y.key:
            y.left ← z # 设 z 为 y 的左子节点
        else:
            y.right ← z # 设 z 为 y 的右子节点

    inorder(Node *u):
        if u = NULL: return
        inorder(u.left)
        输出 u.key
        inorder(u.right)