バイナリツリートラバーサルシーケンスleetcode-

class Solution {
    private List<Integer> retlist = new LinkedList<>();
    public List<Integer> inorderTraversal(TreeNode root) {
        //中序遍历,左臂入栈
        TreeNode cur = root;
        Stack<TreeNode> stack = new Stack<>();
        while(cur!=null || !stack.isEmpty()){
            if(cur!=null){
                stack.add(cur);
                cur = cur.left;
            }
            else{
                cur = stack.pop();
                retlist.add(cur.val);
                cur = cur.right;
            }
        }
        return retlist;
    }
}

反復書き込みは、コアアイデアは、ツリーノードCURとスタックに基づいて2件の判決があり、この時、過去である、と判断する根拠としてのみスタック。

curが空でない場合、それはポップを空であれば、追加のスタック、左へのポインタは、戻り値が追加され、その後、ポインタが右向き

公開された48元の記事 ウォンの賞賛0 ビュー4316

おすすめ

転載: blog.csdn.net/weixin_41327340/article/details/104089774