zoukankan      html  css  js  c++  java
  • Daily Coding Problem: Problem #793

    /**
     * This problem was asked by Yahoo.
    Recall that a full binary tree is one in which each node is either a leaf node, or has two children.
    Given a binary tree, convert it to a full one by removing nodes with only one child.
    
    For example, given the following tree:
         0
        / 
       1   2
      /     
     3       4
           / 
       5   6   7
    
    You should convert it to:
        0
       / 
      5   4
         / 
        6   7
     * */
    class Problem_793 {
        /*
        * solution: post-order:left->right->root, to check each node's children if null.
        * we form the new tree bottom up, starting from the leaves towards the root.
        * By the time we process the current node, both its left and right subtrees were already processed.
        * */
        fun covertTreeToFull(node: Node?): Node? {
            if (node == null) {
                return null
            }
            node.left = covertTreeToFull(node.left)
            node.right = covertTreeToFull(node.right)
            if (node.left == null && node.right == null) {
                return node
            }
            if (node.left == null) {
                return node.right
            }
            if (node.right == null) {
                return node.left
            }
            return node
        }
    
        class Node(value: Int) {
            var left: Node? = null
            var right: Node? = null
        }
    }
  • 相关阅读:
    数据库语句学习(union语句)
    终于开通博客了啦
    Winform用Post方式打开IE
    Winform webbrowser 隐藏 html 元素
    MVC 附件在线预览
    典型用户和场景
    我的第一篇博客01
    大数据算法摘录
    mac下查看端口占用情况
    tomcat的运行脚本
  • 原文地址:https://www.cnblogs.com/johnnyzhao/p/14392307.html
Copyright © 2011-2022 走看看