java的listnode_LeetCode刷题TreeNode和ListNode -[java版]

1. ListNode

package basic;

public class ListNode {

public int val;

public ListNode next;

public ListNode(int val) {

this.val = val;

}

public ListNode(int val, ListNode next) {

this.val = val;

this.next = next;

}

public ListNode(int v0, int... values) {

this.val = v0;

ListNode temp = this;

for (int value : values) {

temp.next = new ListNode(value);

temp = temp.next;

}

}

@Override

public String toString() {

return String.format("%d -> %s", this.val, this.next);

}

}

2. TreeNode

package basic;

import java.util.LinkedList;

public class TreeNode {

public int val;

public TreeNode left;

public TreeNode right;

public TreeNode() {

}

public TreeNode(int val) {

this.val = val;

}

public TreeNode(int val, TreeNode left, TreeNode right) {

this.val = val;

this.left = left;

this.right = right;

}

public TreeNode(int v0, Integer... values) {

this.val = v0;

LinkedList queue = new LinkedList<>();

int index = 0;

queue.addLast(this);

while (index < values.length) {

int size = queue.size();

for (int i = 0; i < size; i++) {

TreeNode node = queue.removeFirst();

if (index < values.length && values[index] != null) {

node.left = new TreeNode(values[index]);

queue.addLast(node.left);

}

index++;

if (index < values.length && values[index] != null) {

node.right = new TreeNode(values[index]);

queue.addLast(node.right);

}

index++;

}

}

}

@Override

public String toString() {

LinkedList arr = new LinkedList<>();

LinkedList queue = new LinkedList<>();

queue.addLast(this);

while (!queue.isEmpty()) {

int size = queue.size();

for (int i = 0; i < size; i++) {

TreeNode node = queue.removeFirst();

if (node != null) {

arr.addLast(node.val);

queue.addLast(node.left);

queue.addLast(node.right);

} else {

arr.addLast(null);

}

}

}

while (arr.peekLast() == null) {

arr.removeLast();

}

return arr.toString();

}

public static void main(String[] args) {

TreeNode root = new TreeNode(1, null, 2, 3, 4, 5);

System.out.println(root);

}

}

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值