![](/img/trans.png)
[英]How can I make this recursive Binary Tree Traversal return null if the input is not found in the tree?
[英]can anyone Explain recursive code for binary tree traversal?
使用遞歸對二叉樹進行中序遍歷。
任何人都可以解釋這些遞歸調用如何在這里工作。
/**
* Definition for a binary tree node.
* public class TreeNode {
* int val;
* TreeNode left;
* TreeNode right;
* TreeNode() {}
* TreeNode(int val) { this.val = val; }
* TreeNode(int val, TreeNode left, TreeNode right) {
* this.val = val;
* this.left = left;
* this.right = right;
* }
* }
*/
class Solution {
public List<Integer> inorderTraversal(TreeNode root) {
ArrayList<Integer> inorder=new ArrayList<>();
result(root,inorder);
return inorder;
}
void result(TreeNode root,ArrayList<Integer> inorder){
if (root==null){
return ;
}
result(root.left,inorder);
inorder.add(root.val);
result(root.right,inorder);
}
}
我無法理解遞歸是如何工作的。
試試 map 把它寫出來。 基本上是這樣的:對於每個節點,您將左子樹的所有節點添加到列表中,然后是節點,然后是右子樹的所有節點。 如果對節點進行排序,使得左側節點的值都小於形成(子)樹根的節點的值,而右側節點的值都大於形成(子)樹根的節點,則列表將被排序。
我會幫你舉個例子。
讓我們假設以下樹:
5
/ \
3 7
/ \ / \
1 4 6 8
\ \
2 9
現在遍歷從根 (5) 開始並執行以下操作:
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.