问答详情
源自:1-13 二叉树中间节点的删除原理及实现(2)

删除了中间节点3的问题

你好 如果删除了中间节点3后 将中间节点3变4后删除了 该节点的右子树的最小节点4后 再通过中序遍历查看 会发现该中间节点4(原3后4) 的左右孩子都会是null 但是打印中序的顺序是对的http://img4.mukewang.com/5e5b6a6b0001acde04790298.jpg

提问者:慕姐1218095 2020-03-01 15:50

个回答

  • 慕莱坞3474231
    2020-05-13 17:23:54

    //中序时应该打出来的是node的key 本来是应该打出4 的却把整个node打印出来了. 
    //说明在最后一个(node.left && node.right)同时存在判断中 赋值出现错误 
    //本应该是
    
        let aux = findMinNode(node.right);
        node.key = aux.key;
        ...
    
    // 写成了
        let aux = findMinNode(node.right);
        node = aux.key;
        ...
        
    //因为本身Object是引用类型数据. 所以node(4) 的left right就都是null
    
    {
        key:8
        left:{
            key: {  //错误位置 ,本来应该是Number(4), 现在变成Node(4)了
                key:4,
                left:...,
                right:...
            },
            left:...,
            right:...
        }
        right:{
            key:10,
            left:...,
            right:...
        }
    }