小米,二叉树中序遍历

    static String solution(String input) {
        if(input.length()<=1) return input;

        Stack<Object> stack=new Stack<>();
        for(int i=0;i<input.length();i++){
            if(stack.isEmpty()||input.charAt(i)!=')'){
                stack.add(input.charAt(i));
            }
            else{
                String res="";

                TreeNode left=null;
                TreeNode right=null;
                while (!stack.isEmpty()){
                    Object tmp=stack.pop();

                    if(tmp instanceof TreeNode){
                        if(right!=null){
                            left=(TreeNode)tmp;
                        }
                        else right=(TreeNode)tmp;
                    }
                    else{
                        char c=(Character)tmp;
                        if(c=='(') break;
                        res+=c;
                    }
                }
                TreeNode cur=new TreeNode((Character)stack.pop()-'0');
                String[] tmp=res.split(",");



                if(tmp.length>1&&tmp[1].length()>0){
                    cur.left=new TreeNode(tmp[1].charAt(0)-'0');
                }else if(left!=null){
                    cur.left=left;
                }

                if(tmp.length>0&&tmp[0].length()>0){
                    cur.right=new TreeNode(tmp[0].charAt(0)-'0');
                }else if(right!=null){
                    cur.right=right;
                }
                stack.add(cur);
            }
        }

        return getAns((TreeNode)stack.pop());
    }

    public static String getAns(TreeNode root) {
        if (root == null) return "";

        String result = "";

        result+=getAns(root.left)+root.val+getAns(root.right);

        return result;
    }

#笔试题目##小米#
全部评论
感觉这题用非递归中序遍历的思想写,但摸了半天摸不出来,汗
点赞 回复 分享
发布于 2019-09-06 20:53

相关推荐

只因飞飞:今日首绷
点赞 评论 收藏
分享
评论
1
8
分享

创作者周榜

更多
牛客网
牛客网在线编程
牛客网题解
牛客企业服务