ts判断对称二叉树

273 阅读1分钟

/**
@author 黄力豪
@desc 判读对称二叉树
@date 2020-06-30 14:03:31
@Email 1131446340@qq.com
*/


let Tree = {
    //定义一个数结构的数据,内部使用类型推断
    root: {
        value: 5,
        left: {
            value: 3,
            left: {
                value: 4
            },
            right: {
                value: 6
            }
        },
        right: {
            value: 3,
            left: {
                value: 6,
                left: {
                    value: 5
                }
            },
            right: {
                value: 4
            }
        }
    }
}
interface TREE {
    //定义接口树
    //left,和right可选
    left?: TREE
    right?: TREE,
    value: number
}

function isduichenTree(tree: TREE): boolean {
    //返回boolean
    // 参数为接口树类型
    let state = true
    //声明返回结果
    function trees(leftNode: TREE, rightNode: TREE):boolean {
        if ((leftNode && rightNode && (leftNode.value === rightNode.value))) {
            //如果左右节点都存在,且左右节点的值相等
            //递归调用
            trees(leftNode.left, rightNode.right)
            trees(leftNode.right, rightNode.left)

        }
        else if (!leftNode && !rightNode) { 
            //如果左右节点都不存在
        }
        else {
            //表示出现两个节点不等
            state = false
            return state
        }
    }
    trees(tree.left, tree.right)
    return state
}
isduichenTree(Tree.root)