数据结构论坛

首页 » 分类 » 常识 » 数据结构树Tree知识点总结附Le
TUhjnbcbe - 2021/4/11 18:24:00
全国白癜风医学高峰论坛 https://m-mip.39.net/nk/mipso_5327542.html

先来明确下树的概念:明确的父子关系

正确的示例:

错误的示例:

几个名词:

节点:线两端的点即节点

根节点:无父节点的节点

叶子节点:无子节点的节点

几个概念:

高度:从下到上,从0计数,根节点最高

深度:从上到下,从0计数,根节点为0

层:从上到下,从1计数,根节点为第一层

特殊的树,二叉树,二叉树又分为普通二叉树、满二叉树,完全二叉树

普通二叉树:每个节点最多两个字节点。

满二叉树:除了叶子节点,每个节点都有左右两个子节点,所有叶子节点在同一层级。

完全二叉树:从根节点开始,从上到下,从左往右,依次填满节点形成的二叉树。

二叉树的遍历:

前序遍历:根节点-左子树-右子树

中序遍历:左子树-根节点-右子树

后续遍历:左子树-右子树-根节点

示例:

前序遍历:A-B-D-E-C-F-G

中序遍历:D-B-E-A-F-C-G

后续遍历:D-E-B-F-G-C-A

Leetcode练习题:

题二叉树前序遍历

classSolution{publicListIntegerpreorderTraversal(TreeNoderoot){ListIntegerresultList=newArrayList();if(root==null){returnresultList;}//将根节点的值加入返回列表resultList.add(root.val);//如果左子节点不为空,前序遍历左子节点if(root.left!=null){resultList.addAll(preorderTraversal(root.left));}//如果右子节点不为空,前序遍历右子节点if(root.right!=null){resultList.addAll(preorderTraversal(root.right));}returnresultList;}}

94题二叉树中序遍历

classSolution{publicListIntegerinorderTraversal(TreeNoderoot){ListIntegerresultList=newArrayList();if(root==null){returnresultList;}//如果左子节点不为空,中序遍历左子节点if(root.left!=null){resultList.addAll(inorderTraversal(root.left));}//将根节点的值加入返回列表resultList.add(root.val);//如果右子节点不为空,中序遍历右子节点if(root.right!=null){resultList.addAll(inorderTraversal(root.right));}returnresultList;}}

题二叉树后序遍历

classSolution{publicListIntegerpostorderTraversal(TreeNoderoot){ListIntegerresultList=newArrayList();if(root==null){returnresultList;}//如果左子节点不为空,后序遍历左子节点if(root.left!=null){resultList.addAll(postorderTraversal(root.left));}//如果右子节点不为空,后序遍历右子节点if(root.right!=null){resultList.addAll(postorderTraversal(root.right));}//将根节点的值加入返回列表resultList.add(root.val);returnresultList;}}预览时标签不可点收录于话题#个上一篇下一篇

1
查看完整版本: 数据结构树Tree知识点总结附Le