leetcode二叉樹-中序遍歷
阿新 • • 發佈:2021-12-13
不會,我可以學;落後,我可以追趕;跌倒,我可以站起來!package binarytree.inordertraversal; import binarytree.untils.GenerateTreeNode; import binarytree.untils.TreeNode; import java.util.ArrayList; import java.util.List; /** * 94. 二叉樹的中序遍歷 * 給定一個二叉樹的根節點 root ,返回它的 中序 遍歷。 * * * * 示例 1: * * * 輸入:root = [1,null,2,3] * 輸出:[1,3,2] * 示例 2: * * 輸入:root = [] * 輸出:[] * 示例 3: * * 輸入:root = [1] * 輸出:[1] * 示例 4: * * * 輸入:root = [1,2] * 輸出:[2,1] * 示例 5: * * * 輸入:root = [1,null,2] * 輸出:[1,2] * * * 提示: * * 樹中節點數目在範圍 [0, 100] 內 * -100 <= Node.val <= 100 * * * 進階: 遞迴演算法很簡單,你可以通過迭代演算法完成嗎? */ public class InOrderTraversal { /** * 左根右 * 舉個例子 1,2,3,4,5,6,7 * 中序遍歷 4 2 5 1 6 3 7 * @param root * @return */ public static List<Integer> inorderTraversal(TreeNode root) { List<Integer> res = new ArrayList<>(); inorder(root,res); return res; } private static void inorder(TreeNode root,List<Integer> res){ if(root == null){ return; } inorder(root.left,res);//左 res.add(root.val);//根 inorder(root.right,res);//右 } public static void main(String[] args) { Integer[] nums = {1,null,2,3}; TreeNode treeNode = GenerateTreeNode.generateTreeNode(nums); List<Integer> res = inorderTraversal(treeNode); for (int i = 0; i < res.size(); i++) { System.out.println(res.get(i)); } } }