添加链接
link管理
链接快照平台
  • 输入网页链接,自动生成快照
  • 标签化管理网页链接
ListNode ( ) { } ListNode ( int val ) { this . val = val ; } ListNode ( int val , ListNode next ) { this . val = val ; this . next = next ; }

在题目的示例中,二叉树的输入都是一个一维数组,表示这个二叉树结构。

输入:root = [1,2,4]

表示的链表为:

因此在 IDE 里面编码调试时,需要一个转化方法方便自己编写并运行测试用例。

转换链表

一维数组转换链表结构:

public class TreeNodeUtil {
     * 一维数组转换链表结构
     * @param array
     * @return
    public static ListNode arrayToListNode(Integer[] array) {
        if (array.length == 0) {
            return null;
        ListNode root = new ListNode(array[0]);
        ListNode other = root; //生成另一个节点,并让other指向root节点,other在此作为一个临时变量,相当于指针
        for (int i = 1; i < array.length; i++) { //由于已给root赋值,所以i从1开始
            ListNode temp = new ListNode(array[i]); //每循环一次生成一个新的节点,并给当前节点赋值
            other.next = temp; //将other的下一个节点指向生成的新的节点
            other = temp; //将other指向最后一个节点(other的下一个节点)  other=other.getNext();
        return root;

使用方式:

ListNodeUtil.arrayToListNode(new Integer[]{1,2,4});

测试用例

打印链表

ListNode p = ListNodeUtil.arrayToListNode(new Integer[]{1,2,4});
ListNodeUtil.print(p);
public static void print(ListNode node) {
    while (node != null) {
        System.out.print(node.val + ",");
        node = node.next;
    System.out.println("");

比较链表

ListNode p = new ListNode(1,new ListNode(2,new ListNode(4,null)));
ListNode q = ListNodeUtil.arrayToListNode(new Integer[]{1,2,4});
System.out.println(ListNodeUtil.isSameListNode(p,q));
public static boolean isSameListNode(ListNode p, ListNode q) {
    if (p == null || q == null) {
        return p == q;
    return p.val == q.val && isSameListNode(p.next, q.next);