题目:
给出二叉树的根节点root,并返回其中顺序扫描。
示例 1:
输入:根=[ 1,null,2,3 ]
输出: [ 1,3,2 ]
示例 2:
输入: root=[]
输出: []
示例 3:
输入: root=[1]
输出: [1]
示例 4:
输入: root=[ 1,2 ]
输出: [ 2,1 ]
示例 5:
输入:根=[ 1,null,2]
输出: [ 1,2 ]
提示:
树中的节点数在范围[ 0,100 ]内
-100=Node.val=100
进阶: 递归算法很简单,你可以通过迭代算法完成吗
思路一:
用递归思想进行左右子树的扫描
中序为左子树-根节点-右子树
小知识:
List是接口,而ArrayList是在一个数组中实现的List类。
ArrayList有add ().remove )等方法。ArrayList Element arrayList = new ArrayListElement()
class解决方案{ publiclistintegerinordertraversal (treenode root ) listintegerres=newarraylistinteger ); 输入顺序(根,res ); 返回RES; } public void in order (treenode root,ListInteger res ) if (root==null ) { return; } in order (根. left,res ); RES.add (根. val ); norder(root.right,res ); )构想2 :
使用迭代的算法思想
class解决方案{ publiclistintegerinordertraversal (treenode root ) listintegerres=newarraylistinteger ); dequetreenodestk=newlinkedlisttreenode (; wile (路线!=空| |! stk.isEmpty () ) while ) (root!=null(STK.push(root ); 根=根.左; } root=stk.pop (; RES.add (根. val ); root=root.right; }返回RES; }