《剑指 offer》 学习26之二叉搜索树与双向链表

题目描述

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

题目链接:牛客网

解题思路


public class Main {
    
    public static class TreeNode {
        int val = 0;
        TreeNode left = null;
        TreeNode right = null;

        public TreeNode(int val) {
            this.val = val;

        }

    }
    
    public static TreeNode pre = null;
    public static TreeNode head = null;
    
	public static void main(String[] args) {
		TreeNode root = new TreeNode(2);
        root.right = new TreeNode(3);
        root.left = new TreeNode(1);

        printTree(convert(root));
	}
	
	public static TreeNode convert(TreeNode root) {
	    inOrder(root);
	    return head;
	}
	
	public static void inOrder(TreeNode node) {
	    if (node == null) {
	        return;
	    } 
	    
	    inOrder(node.left);
	    node.left = pre;
	    if (pre != null) {
	        pre.right = node;
	    }
	    
	    pre = node;
	    if (head == null) {
	        head = node;
	    }
	    inOrder(node.right);
	}
	
	private static void printTree(TreeNode head) {
        while (head != null) {
            System.out.print(head.val + "->");
            head = head.right;
        }

        System.out.println("null");
    }
}

测试结果

image.png

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章