this.right = right;
}
}
// 二叉链式存储结构下的二叉树
public class BiTree {
// 树的根节点
private BiTreeNode root;
// 构造方法
public BiTree(){
this.root = null;
}
public BiTree(BiTreeNode root) {
this.root = root;
}
}
2、通过递归的方式实现二叉树的前、中、后序遍历算法,并对算法及思想简单应用,解决二叉树中的其它应用和实际问题中的应用。
/**
-
先序遍历二叉树的递归算法
-
@param T
*/
public void preRootTraverse(BiTreeNode T){
if (T != null){
// 先访问根节点
System.out.println(T.data);
// 再访问左子节点
postRootTraverse(T.left);
// 再访问右子节点
postRootTraverse(T.right);
}
}
/**
-
中序遍历二叉树的递归算法
-
@param T
*/
public void inRootTraverse(BiTreeNode T){
if (T != null){
// 先访问左子节点
inRootTraverse(T.left);
// 再访问根节点
System.out.println(T.data);
// 在访问右子节点
inRootTraverse(T.right);
}
}
/**
-
后序遍历二叉树的递归算法
-
@param T
*/
public void postRootTraverse(BiTreeNode T){
if (T != null){
// 先访问左子树
postRootTraverse(T.left);
// 再访问右子树
postRootTraverse(T.right);
// 再访问根节点
System.out.println(T.data);
}
}
3、求二叉树的深度
/**
-
求二叉树的深度 (递归)
-
@param T
-
@return
*/
public int getDepth(BiTreeNode T){
if(T != null){
int leftDepth = getDepth(T.left);
int rightDepth = getDepth(T.right);
return 1 + (leftDepth > rightDepth ? leftDepth:rightDepth);
}
return 0;
}
4、编写递归算法,计算二叉树中叶子结点的数目。
/**
-
计算节点个数(递归)
-
@param T
-
@return
*/
public int countNode(BiTreeNode T){
// 采用先序遍历的方式对二叉树进行遍历,并计算其节点个数
int count = 0;
if (T != null){
count++;
count += countNode(T.left);
count += countNode(T.right);
}
return count;
}
5*、通过非递归遍历的的方式实现二叉树的前、中、后序遍历算法和层次遍历算法。
/**
- 先序遍历二叉树的非递归算法
*/
public void preRootTraverse(){
BiTreeNode T = root;
if (T != null){
// 构造一个栈
Stack stack = new Stack();
// 根节点入栈
stack.push(T);
while (!stack.isEmpty()){
// 移除栈顶节点,并访问其值
T = (BiTreeNode) stack.pop();
System.out.println(T.data);
while(T != null){
// 访问左子结点
if (T.left != null){
System.out.println(T.left.data);
}
// 右子节点非空入栈
if (T.right != null){
stack.push(T.right);
小编13年上海交大毕业,曾经在小公司待过,也去过华为、OPPO等大厂,18年进入阿里一直到现在。
深知大多数初中级Java工程师,想要提升技能,往往是自己摸索成长,但自己不成体系的自学效果低效又漫长,而且极易碰到天花板技术停滞不前!
因此收集整理了一份《2024年最新Java开发全套学习资料》送给大家,初衷也很简单,就是希望能够帮助到想自学提升又不知道该从何学起的朋友,同时减轻大家的负担。
由于文件比较大,这里只是将部分目录截图出来,每个节点里面都包含大厂面经、学习笔记、源码讲义、实战项目、讲解视频
如果你觉得这些内容对你有帮助,可以添加下面V无偿领取!(备注Java)
总结
其他的内容都可以按照路线图里面整理出来的知识点逐一去熟悉,学习,消化,不建议你去看书学习,最好是多看一些视频,把不懂地方反复看,学习了一节视频内容第二天一定要去复习,并总结成思维导图,形成树状知识网络结构,方便日后复习。
这里还有一份很不错的《Java基础核心总结笔记》,特意跟大家分享出来
目录:
部分内容截图:
路线图里面整理出来的知识点逐一去熟悉,学习,消化,不建议你去看书学习,最好是多看一些视频,把不懂地方反复看,学习了一节视频内容第二天一定要去复习,并总结成思维导图,形成树状知识网络结构,方便日后复习。
这里还有一份很不错的《Java基础核心总结笔记》,特意跟大家分享出来
目录:
[外链图片转存中…(img-7kr5DYUa-1710758750550)]
部分内容截图:
[外链图片转存中…(img-slnL8s3z-1710758750550)]
[外链图片转存中…(img-MenJRhe2-1710758750551)]