Swift.树的子结构

cubegao 2015-07-10 AM 382℃ 0条
题目描述:输入两颗二叉树A,B,判断B是不是A的子结构。
import Foundation

class For18Solution {
    func isSubTreeNode(_ pRoot: TreeNode?,_ qRoot: TreeNode?) -> Bool {
        
        var res = false
        
        if pRoot != nil && qRoot != nil {
            if pRoot?.val == qRoot?.val {
                res = runSubTreeNode(pRoot, qRoot)
            }
            
            if !res {
                res = isSubTreeNode(pRoot?.left, qRoot)
            }
            
            if !res {
                res = isSubTreeNode(pRoot?.right, qRoot)
            }
        }
        
        return res
        
    }
    
    func runSubTreeNode(_ pRoot: TreeNode?,_ qRoot: TreeNode?) -> Bool {
        
        if qRoot == nil {
            return true
        }
        
        if pRoot == nil {
            return false
        }
        
        if pRoot?.val != qRoot?.val {
            return false
        }
        
        return runSubTreeNode(pRoot?.left,qRoot?.left)&&runSubTreeNode(pRoot?.right,qRoot?.right)
    }
}

算法思想:遍历到最后,节点为空那就是子结构,相反不是。

github地址:https://github.com/cubegao/LeetCode

标签: 算法

非特殊说明,本博所有文章均为博主原创。

评论啦~