剑指Offer—26—二叉搜索树与双向链表

来源:互联网 发布:安卓最快的数据库 编辑:程序博客网 时间:2024/06/07 07:45

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

package A26二叉搜索树与双向链表;public class Solution {    public class TreeNode {        int val = 0;        TreeNode left = null;        TreeNode right = null;        public TreeNode(int val) {            this.val = val;        }    }    TreeNode head = null;    TreeNode realHead = null;    public TreeNode Convert(TreeNode pRootOfTree) {        ConvertSub(pRootOfTree);        return realHead;    }    private void ConvertSub(TreeNode pRootOfTree) {        if (pRootOfTree == null)            return;        ConvertSub(pRootOfTree.left);        if (head == null) {            head = pRootOfTree;            realHead = pRootOfTree;        } else {            head.right = pRootOfTree;            pRootOfTree.left = head;            head = pRootOfTree;        }        ConvertSub(pRootOfTree.right);    }    public static void main(String[] args) {        Solution solution = new Solution();        TreeNode root = solution.new TreeNode(10);        TreeNode six = solution.new TreeNode(6);        TreeNode four = solution.new TreeNode(4);        TreeNode eight = solution.new TreeNode(8);        TreeNode fourteen = solution.new TreeNode(14);        TreeNode twelve = solution.new TreeNode(12);        TreeNode sixteen = solution.new TreeNode(16);        root.left = six;        root.right = fourteen;        six.left = four;        six.right = eight;        four.left = null;        four.right = null;        eight.left = null;        eight.right = null;        fourteen.left = twelve;        fourteen.right = sixteen;        twelve.left = null;        twelve.right = null;        sixteen.right = null;        sixteen.left = null;        solution.Convert(root);    }}
原创粉丝点击