剑指offer刷题记录(树篇)

1.重建二叉树

注意:pre.length为 1的时候,root不是全局变量,所以写的不是root,而是pre[0] 调试了半天才出来的结果。还有vin.length和pre.length尽量加上。
function reConstructBinaryTree(pre, vin)
{

    // write code here
    var result = null;
   
        if(pre.length>1){
             var root = pre[0]
        var rootIndex = vin.indexOf(root);
        var leftVin = vin.slice(0,rootIndex);
        var rightVin = vin.slice(rootIndex+1,vin.length);
        pre.shift();
        var leftPre = pre.slice(0,leftVin.length);
        var rightPre = pre.slice(leftVin.length,pre.length);
            result = {
                val:root,
                left:reConstructBinaryTree(leftPre,leftVin),
                right:reConstructBinaryTree(rightPre,rightVin)
            }
        }else if(pre.length==1){
            result = {
                val:pre[0],
                left:null,
                right:null
            }
        }
    return result;
}

2.二叉树的镜像

/* function TreeNode(x) {
    this.val = x;
    this.left = null;
    this.right = null;
} */
function Mirror(root)
{
    if(root==null) {return null;}
    if(root.left==null&&root.right==null){
        return null;
    }
        var temp = root.left;
        root.left = root.right;
        root.right = temp;
        if(root.left){
            Mirror(root.left)
        }
        if(root.right){
            Mirror(root.right);
        }
}

3.从上往下打印二叉树

需要借助一个栈来实现效果
/* function TreeNode(x) {
    this.val = x;
    this.left = null;
    this.right = null;
} */
function PrintFromTopToBottom(root)
{
    // write code here
    var arr = [];
    var data = [];
    if(root!==null){
        arr.push(root)
    }
    while(arr.length!=0){
        var node = arr.shift();
        if(node.left!=null){
            arr.push(node.left)
        }
        if(node.right!=null){
            arr.push(node.right)
        }
        data.push(node.val);
    }
    return data;
}
4
5
5

全部评论

相关推荐

07-15 00:33
江苏大学 Java
代码飞升:哈哈哈哈评论区三个打广告的
简历中的项目经历要怎么写
点赞 评论 收藏
分享
白火同学:先说结论,准大三不是特别好找实习,boss沟通300+没有实习是很正常的情况。一是暑期实习时间太短了,二是在这么多准大四都找不到实习,从实习时间和掌握技术层面,企业会优先看他们。 再说简历,其实985本+准大三到这水平的简历也很优秀了,要说的话,项目经历可以再优化一下,可以基本围绕采取STAR原则,分为项目概述、技术架构、技术亮点、实现结果,再发给AI润色一下。 最后说操作,准大三的话,如果想找实习那就多投,不过现在也7月中旬了,时间上已经略晚了。如果7月底实在找不到,也可以多刷点算法,多学点技术,这实习也不至于一定得有,当然有更好。
点赞 评论 收藏
分享
评论
点赞
收藏
分享

创作者周榜

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