《劍指 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

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