劍指Offer學習-面試題36:二叉搜索樹與雙向鏈表

	 /**
     * 二叉搜索樹與雙向鏈表
     *
     * @param root
     * @return
     */
    public BinaryTreeNode convert(BinaryTreeNode root) {
        BinaryTreeNode last = null;
        convertNode(root, last);
        BinaryTreeNode head = last;
        while (head != null && head.left != null) {
            head = head.left;
        }
        return head;
    }

    private void convertNode(BinaryTreeNode root, BinaryTreeNode last) {
        if (root == null) return;
        BinaryTreeNode cur = root;
        if (cur.left != null) {
            convertNode(cur.left, last);
        }
        cur.left = last;
        if (last != null) {
            last.right = cur;
        }
        last = cur;
        if (cur.right != null) {
            convertNode(cur.right, last);
        }
    }
發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章