博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
5.30 Tree Traversal + Tree manipulation
阅读量:6068 次
发布时间:2019-06-20

本文共 1159 字,大约阅读时间需要 3 分钟。

    1. Binary Tree Preorder Traversal

题目:对一棵二叉树进行前序遍历,并将结果存在一个List 当中

思路:使用递归
细节:
对于递归版本:注意preorderTraversal() function 返回的是一个List, 所以不正直接用 res.add(root.val), preorderTraversal(root.left), preorderTraversal(root.right)来直接遍历
对于非递归版本:使用stack数据结构来辅助遍历,根左右的遍历顺序 对于栈操作需要反向按照根右左的顺序来压入栈

public class Solution {    public ArrayList
preorderTraversal(TreeNode root) { ArrayList
result = new ArrayList
(); // null or leaf if (root == null) { return result; } // Divide ArrayList
left = preorderTraversal(root.left); ArrayList
right = preorderTraversal(root.right); // Conquer result.add(root.val); result.addAll(left); result.addAll(right); return result; }}
    1. Lowest Common Ancestor of a Binary Tree

LCA

思路: divide and conquer
什么时候返回 root? -> (root == p || root == q)
什么时候返回 left ? -> left != null && right == null
什么时候返回 right ? -> right != null && left == null

    1. Lowest Common Ancestor of a Binary Search Tree
      要利用BST的特性来提高搜索过程的效率

转载于:https://www.cnblogs.com/kong-xy/p/9114651.html

你可能感兴趣的文章
Nginx反向代理和负载均衡部署指南
查看>>
java获取当前日期时间代码总结
查看>>
互联网广告学——程序化购买
查看>>
新版本chrome浏览器控制台怎么设置成独立的窗口
查看>>
oracle中nvarchar2字符集不匹配
查看>>
Mysql5.6.22源代码安装
查看>>
每天一个linux命令(5):rm 命令
查看>>
mksquash_lzma-3.2 编译问题
查看>>
【转帖】C# DllImport 系统调用使用详解 托管代码的介绍 EntryPoint的使用
查看>>
PHP JAVA Bridge桥的最新使用
查看>>
免费工具
查看>>
锋利的JQuery —— DOM操作
查看>>
Swift应用开源项目推荐
查看>>
BZOJ1845 : [Cqoi2005] 三角形面积并
查看>>
机器语言——码运算(具体解释反码补码由来)
查看>>
二维码的生成细节和原理
查看>>
关于B树的一些总结
查看>>
学习资料下载地址
查看>>
exit()和_exit()和return
查看>>
apache开源项目-- NiFi
查看>>