资讯专栏INFORMATION COLUMN

数据结构算法回顾

liaorio / 2584人阅读

摘要:今天发现自己对于数据结构有点陌生了,最近几年主要精力放在语言层次上,这些基本的东西反而有些陌生了,温故而知新,决定花些时间把这些东西整理下。本文不定期更新。

今天发现自己对于数据结构有点陌生了,最近几年主要精力放在语言层次上,这些基本的东西反而有些陌生了,温故而知新,决定花些时间把这些东西整理下。本文不定期更新。

- 树的层次遍历

输入

        4
      /   
     6     9
    /      
   7   8     12

要求打印出 4->6->9->7->8->12

public void PrintByLevel() {
        LinkedList l = new LinkedList();
        l.add(this);
        while (!l.isEmpty()) {
            Tree tmp = l.pollFirst();
            System.out.println(tmp.getValue());
            if (null != tmp.getLChild()) {
                l.add(tmp.getLChild());
            }
            if (null != tmp.getRChild()) {
                l.add(tmp.getRChild());
            }
        }
    }

链表的递归和非递归反转
递归反转

// 递归,在反转当前节点之前先反转后续节点

public static ListNode Reverse(ListNode head) {
        if (null == head || null == head.next) {
            return head;
        }
        ListNode reversedHead = Reverse(head.next);
        head.next.next = head;
        head.next = null;
        return reversedHead;
    }

非递归反转

public static ListNode NoneRecursiveReverse(ListNode head) {
    ListNode retval = null;
    ListNode node = head;
    ListNode preNode = null;
    while ( node != null ){
        // get the next node, and save it at pNext
        ListNode nextNode = node.next;
        // if the next node is null, the current is the end of original
        // list, and it"s the head of the reversed list
        if ( nextNode == null) {
            retval = node;
        }
        // reverse the linkage between nodes
        node.next = preNode;
        preNode = node;
        node = nextNode;
    }
    return retval;
}

文章版权归作者所有,未经允许请勿转载,若此文章存在违规行为,您可以联系管理员删除。

转载请注明本文地址:https://www.ucloud.cn/yun/64289.html

相关文章

  • 排序算法回顾(JavaScript)

    摘要:回顾选择排序,插入排序,冒泡排序,快速排序,希尔排序,归并排序,堆排序以及如何计算时间复杂度学习文章同学的描述数据结构等同学的十大经典算法本文代码也上传到了排序算法回顾。但希尔排序是非稳定排序算法。 回顾选择排序,插入排序,冒泡排序,快速排序,希尔排序,归并排序,堆排序以及如何计算时间复杂度学习文章:hahda同学的javascript描述数据结构、hustcc等同学的十大经典算法 ...

    jlanglang 评论0 收藏0
  • 回顾 | 开源分布式中间件DBLE社区分享活动总结

    摘要:社区投稿配置解析投稿余朝飞本文简单介绍了中的三个重要的配置段落,分别是的系统配置,用户配置以及黑白名单功能,针对用户配置则介绍了实际应用场景下的配置以及对应的权限配置,并详细介绍了黑白名单配置实践。 1月24日,我们发布了为期30天的「如何获取全国 25场 MySQL 主题大会免费入场券」有奖社区分享活动,希望社区同学能够分享测试或生产环境中DBLE使用上的难题,困惑,创新或收获,分享...

    wangbjun 评论0 收藏0
  • 正则与JS中的正则

    摘要:注意本文将正则与中的正则分开讨论。正则零宽断言更多参考各种语言对于正则不同支持参考单行模式与多行模式通过设置正则表达式后的修饰符可开启对应的匹配模式单行模式和多行模式。 最近这段时间帮同学处理一些文档, 涉及到一些结构化文档的工作大部分都得使用正则表达式, 之前对于正则的认识大多来源于语言书上那几页的介绍, 自己也没有用过几次。这里将我之前感到模糊的概念作个整理。因为对JS了解多点,所...

    firim 评论0 收藏0

发表评论

0条评论

最新活动
阅读需要支付1元查看
<