美文网首页
Java日记2018-06-26

Java日记2018-06-26

作者: hayes0420 | 来源:发表于2018-06-26 06:22 被阅读0次
  1. 二叉搜索树的后序遍历序列
    以数组{5,7,6,9,11,10,8}为例,后序遍历结果的最后一个数字8就是根节点的值。在这个数组中,前3个数字5,7和6都比8小,是值为8的结点的左子树结点;后3个数字9,11和10都比8 大,是值为8的结点的右子树结点
    于是呢,如果只有两个或者1个数,定义为是真的。具体实现上,先找左边第一个比跟节点(也就是最后一个点)大的值,如果此后的点还存在比根节点小的值,那么就是假的喽,继续递归实现。
public static boolean VerifySquenceOfBST(int[] arr) {
        if(arr==null || arr.length==0) return false;
        return verify(arr,0,arr.length-1);
    }
    public static boolean verify(int[] arr,int start,int end)  {
        if(end-start<=1) return true;
        int cur = start;
        //找到比跟节点大的地方
        while(arr[cur]<arr[end] && cur<end) {
            cur++;
        }
        //后面的节点一旦比根节点还小,就说明不是右子树
        for(int i = cur+1;i<end;i++) {
            if(arr[i]<arr[end]) return false;
        }
        return verify(arr, start, cur - 1) && verify(arr, cur, end - 1);
    }
  1. 二叉树中和为某一值的路径
    递归的实现,栈弹入弹出的时机选择还蛮妙,测试数据时候猜测+试验出来,理解了一下结果
//二叉树中和为某一值的路径
    public static void findpath(TreeNode root, int target) {
        if (root == null)
            return;
        Stack<Integer> path = new Stack<Integer>();
        findpathcore(root, target, path);
    }

    public static void findpathcore(TreeNode root, int target, Stack<Integer> path) {
        if (root == null)
            return;
        //注意push即pop的位置,要在判断外边,这样弹出时候能弹出到最外层,蛮抽象,再看时候可能会更理解……
        path.push(root.val);
        if (root.left == null && root.right == null) {
            if (target == root.val) {
                //path.push(root.val);
                for (int i : path) {
                    System.out.print(i + " ");
                }
                System.out.println(" ");
            }
        } else {
            //path.push(root.val);
            findpathcore(root.left, target - root.val, path);
            findpathcore(root.right, target - root.val, path);
            //path.pop();
        }
        path.pop();
    }

相关文章

  • 雨夜接儿子放学

    2018-06-26 安然玉兔儿 2018-06-26 19:14 · 字数 170 · 阅读 0 · 日记本 又...

  • Java日记2018-06-26

    二叉搜索树的后序遍历序列以数组{5,7,6,9,11,10,8}为例,后序遍历结果的最后一个数字8就是根节点的值。...

  • 夜雨

    夜雨 俊中 2018-06-26 08:20 · 字数 192 · 阅读 0 · 日记本 《雨夜》 文/俊中 这场...

  • 6月26日

    6月26日 平淡是福1188 2018-06-26 23:31 · 字数 424 · 阅读 0 · 日记本 学会承...

  • 🌱今天是第179天🌱感恩生命中的贵人    2018-06-26

    2018-06-26 考研日记 成长中的每个阶段,总能遇见生命中的贵人,谢谢上天的恩赐(^O^)真的超级感激~...

  • 2018-06-26

    2018-06-26 梦囝 2018-06-26_ 字数 301 · 阅读 35 · 日记本 与情绪和谐相处四步骤...

  • Flow数组类型(Array Types) - 2018-06-

    2018-06-26 创建

  • 2018-06-26 第55天 感恩日记 李大伟

    2018-06-26 第55天 感恩日记 李大伟 1 感恩今天北京闷热的天气,一进门被孩子点燃了,没压住,小我出现...

  • 2018-06-26

    2018-06-26字数 540阅读 117 日记本 姓名:周富强 公司:厦门大科机械有限公司 日精进打卡第106...

  • 第一次!

    第一次 李小仙服装疗愈师 2018-06-26 09:04 · 字数 1090 · 阅读 43 · 日记本 一大早...

网友评论

      本文标题:Java日记2018-06-26

      本文链接:https://www.haomeiwen.com/subject/mhxpyftx.html