美文网首页
iOS实现反转二叉树

iOS实现反转二叉树

作者: 哈布福禄克 | 来源:发表于2019-09-26 18:16 被阅读0次

\color{red}{OC版本声明}

节点属性


@interface  TreeNode:NSObject

@property(nonatomic,assign)NSInteger  val;

@property(nonatomic,strong)TreeNode *left;

@property(nonatomic,strong)TreeNode *right;

@end

实现代码:

-(void)exchangeNode:(TreeNode*)node{
//判断是否存在node节点
    if(node){//交换左右节点
    TreeNode*temp = node.left;
    node.left = node.right;
    node.right = temp;
    }
}

-(TreeNode*)invertTree:(TreeNode*)root{
    //边界条件 递归结束或输入为空情况
    if(!root){
      return  root;
    }
    //递归左右子树
    [self invertTree: root.left];
    [self invertTree: root.right];
    //交换左右子节点
    [self exchangeNode:root];
    return  root;
    }

\color{#4285f4}{S}\color{#ea4335}{w}\color{#fbbc05}{i}\color{#4285f4}{f}\color{#34a853}{t}

节点


public class TreeNode {
  public var val: Int
  public var left: TreeNode?
  public var right: TreeNode?
  public init(_ val: Int) {
      self.val = val
      self.left = nil
      self.right = nil
  }
}

实现代码:


func invertTree(_ root: TreeNode?) -> TreeNode? {
    guard let root = root else {
        return nil
    }
    invertTree(root.left)
    invertTree(root.right)
    exchangeNode(root)
    return root;
}

func exchangeNode(_ node: TreeNode?)  {

    if node != nil {
        let tmp = node?.left
        node?.left = node?.right
        node?.right = tmp
    }
}

相关文章

网友评论

      本文标题:iOS实现反转二叉树

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