剑指offer — 二叉树与双向链表

来源:互联网 发布:保湿水推荐 知乎 编辑:程序博客网 时间:2024/06/03 11:54

输入一棵二叉搜索树,将该二叉搜索树转换成一个排序的双向链表。要求不能创建任何新的结点,只能调整树中结点指针的指向。

要注意其中的各种空节点的情况,还有链表的最终位置

java

/**public class TreeNode {    int val = 0;    TreeNode left = null;    TreeNode right = null;    public TreeNode(int val) {        this.val = val;    }}*/public class Solution {    public TreeNode Convert(TreeNode pRootOfTree) {        if (pRootOfTree == null) {            return null;        }        if (pRootOfTree.left == null && pRootOfTree.right == null) {            return pRootOfTree;        }        TreeNode leftTemp = Convert(pRootOfTree.left);        TreeNode right = Convert(pRootOfTree.right);        if (leftTemp != null) {            TreeNode left = getTail(leftTemp);        left.right = pRootOfTree;            pRootOfTree.left = left;        }        if (right != null) {            right.left = pRootOfTree;        pRootOfTree.right = right;        }if (leftTemp == null) {            return pRootOfTree;        } else {            return leftTemp;        }    }    private TreeNode getTail(TreeNode node) {        while (node.right != null) {            node = node.right;        }        return node;    }}


原创粉丝点击