94. Binary Tree Inorder Traversal

题目分析

原题链接,登陆 LeetCode 后可用
这道题目是中序遍历二叉树,中序遍历二叉树的过程可以总结为,中序遍历左子树,访问根节点,中序遍历右子树,这里借助栈来实现。

代码

/**
 * Definition for a binary tree node.
 * public class TreeNode {
 *     int val;
 *     TreeNode left;
 *     TreeNode right;
 *     TreeNode(int x) { val = x; }
 * }
 */
class Solution {
    public List inorderTraversal(TreeNode root) {
        
        ArrayList res = new ArrayList();
        Stack s = new Stack();
        
        TreeNode t = root;
        
        while(!s.isEmpty() || t != null) {
            // 根节点不为空,先将根节点入栈,直到找到“最左”边的结点
            if(t != null) {
                s.push(t);
                t = t.left;
            } else {
                t = s.pop();
                res.add(t.val);
                t = t.right;
            }
        }
        return res;
    }
}

你可能感兴趣的:(94. Binary Tree Inorder Traversal)