文章标题

来源:互联网 发布:java开发是做什么的 编辑:程序博客网 时间:2024/05/29 19:17

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

public class Solution {    TreeNode head = null;    TreeNode realHead = null;    public TreeNode Convert(TreeNode pRootOfTree) {        if(pRootOfTree==null) return null;        if(pRootOfTree!=null){            ConvertHelper(pRootOfTree);        }        return realHead;    }    public void ConvertHelper(TreeNode root){        if(root!=null){            ConvertHelper(root.left);            if(head==null){                head = root;                realHead = root;            }else{                head.right = root;                root.left = head;                head = root;            }            ConvertHelper(root.right);        }    }}

思路:通过二叉搜索树的中序遍历序列可以转换为排序链表,中序遍历就是先遍历左子树,然后对节点进行操作,在遍历右子树,这里对节点进行操作是将上一个遍历的节点保存下来,然后上一个节点的right赋值为单前节点,单前节点的left赋值为上一个节点,迭代更新head的值,也就是这里单前节点变为了下一个节点的上一个节点

原创粉丝点击