序文
:つまりトラバーサルLeetCodeの3種類の3つのトピックに対応する
先行順走査:144バイナリツリートラバーサルの先行予約
行きがけ:94 INORDERバイナリツリートラバーサル
後順:145バイナリツリートラバーサル後順
繰り返し、その後の更新を追加しないで、当面、現在の記事では、再帰的にしているので、非常に単純な再帰的に、私はについてお話しましょう
トラバースする方法の三種類、泥棒のように見えますが、実際には、問題がこれにノードを追加する最初のものです
バイナリツリーの例
空の二分木、木の各ノードは全て、例えば良好もたらしたツリーに加えて、一般的な
A→B→D→E:順トラバーサル →G→C→F
予約購入を:D→B→G→E →A→C→Fの
後順:D→G→E→B →F→C→A
データツリー
これは、ツリーノードのカスタム、非常にシンプルな構造、左ノード、右ノード、値そのものであります
class TreeNode {
int val;
TreeNode left;
TreeNode right;
TreeNode(int x) {
val = x;
}
}
再帰的に
予約限定トラバーサル
class Solution {
public List<Integer> preorderTraversal(TreeNode root) {
List<Integer> res = new ArrayList<>();
if (root == null) return res;
res.add(root.val);
res.addAll(preorderTraversal(root.left));
res.addAll(preorderTraversal(root.right));
return res;
}
}
予約限定!
class Solution {
public List<Integer> inorderTraversal(TreeNode root) {
List<Integer> res = new ArrayList<>();
if (root == null) return res;
res.addAll(inorderTraversal(root.left));
res.add(root.val);
res.addAll(inorderTraversal(root.right));
return res;
}
}
後順
class Solution {
public List<Integer> postorderTraversal(TreeNode root) {
List<Integer> res = new ArrayList<>();
if (root == null) return res;
res.addAll(postorderTraversal(root.left));
res.addAll(postorderTraversal(root.right));
res.add(root.val);
return res;
}
}
反復して
リンクは、国際版のleetcodeであることに注意してください、自動的に中国語版のleetcodeをオンにすることが可能です