首页 > 学院 > 开发设计 > 正文

二叉搜索树和双向链表

2019-11-08 01:09:07
字体:
来源:转载
供稿:网友

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

对这棵二叉搜索树中序遍历,然后修改指针并将双链表的头指针返回,然后合并左边双链表,根节点,右边双链表

/**public class TreeNode {    int val = 0;    TreeNode left = null;    TreeNode right = null;    public TreeNode(int val) {        this.val = val;    }}*/public class Solution {    PRivate TreeNode doConvert(TreeNode root){        if(root == null)return null ;         TreeNode leftRe = doConvert(root.left) ;         TreeNode rightRe = doConvert(root.right) ;         TreeNode ll = root ;         root.left=root ;         root.right=root ;         if(leftRe != null){            merge(leftRe , root) ;             ll = leftRe ;         }        if(rightRe != null){            merge(ll , rightRe) ;         }        return ll ;     }   	public TreeNode Convert(TreeNode root) {        TreeNode head = doConvert(root) ;         if(head == null)return null ;         head.left.right = null ;         head.left = null ;         return head ;     }    private void merge(TreeNode leftLeft , TreeNode rightLeft){        TreeNode leftRight = leftLeft.left ;         TreeNode rightRight = rightLeft.left ;        leftRight.right = rightLeft ;         rightLeft.left = leftRight ;         leftLeft.left = rightRight ;         rightRight.right = leftLeft  ;    }}
发表评论 共有条评论
用户名: 密码:
验证码: 匿名发表