#94.Binary Tree Inorder Traversal
Problem statement
Given the root
of a binary tree, return the inorder traversal of its nodes' values.
Example 1
Input: root = [1,null,2,3]
Output: [1,3,2]
Example 2
Input: root = []
Output: []
Example 3
Input: root = [1]
Output: [1]
Explanation
給定一個二元樹,返回中序走訪的節點值
Solution
解題前先來了解中序走訪,樹的走訪是訪問樹中所有節點,並將樹中的資料轉換成線性關係,例如返回一個結果陣列。那麼中序走訪的順序是先訪問左子樹,接著是樹根,最後才是右子樹,依照左子樹→樹根→右子樹的順序走訪二元樹直到葉節點也就是終端節點為止
此題意思非常清楚,單純只是寫一個中序走訪的遞迴方法,建立一個集合 res
用來儲存每次走訪的節點值,另外再建立一個 Inorder
的方法,其方法內容為中序走訪的方式,先判斷節點是否為 null,如果為 null 則代表這個節點是終點節點,所以不做任何事;若該節點為非 null,則先呼叫 Inorder
自己,參數帶入左節點,透過遞迴左子樹直到終端節點為止,當抵達終端節點時,Inorder
方法判斷該節點為 null,不做任何事結束方法,並返回到呼叫自己的方法,此時再將節點值記錄到 res
裡,接著再用相同作法走訪右子樹
public IList<int> InorderTraversal(TreeNode root)
{
IList<int> res = new List<int>();
Inorder(root, ref res);
return res;
}
private void Inorder(TreeNode node, ref IList<int> res)
{
if (node != null)
{
Inorder(node.left, ref res);
res.Add(node.val);
Inorder(node.right, ref res);
}
}
Reference
Thanks for reading the article 🌷 🌻 🌼
If you like it, please don't hesitate to click heart button ❤️
or click like on my Leetcode solution
or follow my GitHub ⭐ I'd appreciate it.
Top comments (0)