1
先行ノードのない単一リンクリストLの場合、再帰的アルゴリズムは、すべてのノード値を正の順序で出力するように設計されています。
public class Solution1 {
public void printL(ListNode node) {
if (node == null) {
return;
}
System.out.println(node.val);
printL(node.next);
}
}
2
先行ノードのない単一リンクリストLの場合、再帰的アルゴリズムは、すべてのノード値を逆の順序で出力するように設計されています。
public class Solution2 {
public void printL(ListNode node) {
if (node == null) {
return;
}
printL(node.next);
System.out.println(node.val);
}
}
3
先行ノードのない空でない単一リンクリストLの場合、最大のノードのアドレスを返す再帰的アルゴリズムを設計します(そのようなノードが一意であると仮定します)。
public class Solution3 {
public ListNode findMax(ListNode node) {
if (node.next == null) {
return node;
}
return node.val > findMax(node.next).val ? node : findMax(node.next);
}
}
4
先行ノードのない単一リンクリストLの場合、再帰アルゴリズムは、値がxである最初のノードのアドレスを返すように設計されています。そのようなノードがない場合はnullを返します。
public class Solution4 {
public ListNode findNode(ListNode node, int target) {
if (node == null) {
return null;
}
if (node.val == target) {
return node;
}
return findNode(node.next, target);
}
}
5
先行ノードのない単一リンクリストLの場合、再帰アルゴリズムは、値がxである最初のノードを削除するように設計されています。
public class Solution5 {
/**
* 虽说是递归,本质还是双/三指针的向右滑动
* 设置一个dummy头结点很有必要
*/
public void deleteNode(ListNode head, int target) {
ListNode dummy = new ListNode(-1);
dummy.next = head;
delete(dummy, head, target);
}
private void delete(ListNode pre, ListNode node, int target) {
if (node == null) {
return;
}
if (node.val == target) {
pre.next = node.next;
return;
}
delete(node, node.next, target);
}
}
6
二分木が二分木ストレージ構造に格納され、ノード値がint型であると仮定すると、再帰アルゴリズムは、二分木bt内のすべてのリーフノードの合計を見つけるように設計されています。
public class Solution6 {
public int nodeSum(TreeNode node) {
if (node == null) {
return 0;
}
if (node.left == null && node.right == null) {
return node.val;
}
return nodeSum(node.left) + nodeSum(node.right);
}
}
7
二分木が二分木ストレージ構造に格納され、ノード値がint型であると仮定すると、再帰アルゴリズムは、ノード値がk以上である二分木bt内のノードの数を見つけるように設計されています。
public class Solution7 {
public int countNode(TreeNode node, int k) {
if (node == null) {
return 0;
}
return (node.val >= k ? 1 : 0) + countNode(node.left, k) + countNode(node.right, k);
}
}
8
バイナリツリーがバイナリチェーンストレージ構造に格納されており、すべてのノード値が異なると仮定して、再帰的アルゴリズム値x(ノードレベル1)でノードレベルを設計し、そのようなノードが見つからない場合は0を返します。
public class Solution8 {
public int findLayerOfK(TreeNode node, int k, int level) {
if (node == null) {
return 0;
}
if (node.val == k) {
return level;
}
int t1 = findLayerOfK(node.left, k, level + 1);
int t2 = findLayerOfK(node.right, k, level + 1);
return t1 != 0 ? t1 : t2;
}
}
⭐️これは、ネットワーク全体で最も美しいJavaソリューションである必要があります> _ <