侧边栏壁纸
博主头像
buukle博主等级

布壳儿

  • 累计撰写 106 篇文章
  • 累计创建 15 个标签
  • 累计收到 9 条评论

目 录CONTENT

文章目录

算法练习(8) - 二叉树递归

administrator
2021-06-18 / 0 评论 / 0 点赞 / 220 阅读 / 1685 字

含义

二叉树是一种常见的数据结构,由根节点自上而下,通过比较,将数据按照和父节点比较结果大右小左的插入的一种数据结构.

二叉树的一些基本方法手写

// define data structure
public class BinaryTreeNode{
	Integer value;
	BinaryTreeNode left;
	BinaryTreeNode right;
	
	// 插入节点
	public static insertNode(BinaryTreeNode treeNode , Integer value){
	
		if(treeNode.value == null){
			treeNode.value = value;
		}
		if(treeNode.value > value ){
			if(treeNode.left == null){
				BinaryTreeNode node = new BinaryTreeNode();
			}
			insertNode(node,value);
		}
		if(treeNode.value < value ){
			if(treeNode.right == null){
				BinaryTreeNode node = new BinaryTreeNode();
			}
			insertNode(node,value);
		}
	}
	
	// 先序遍历
	public static void foreachpreOrder(BinaryTreeNode tree){
		if(tree != null){
			System.out.println(node.value);
			// do something ...
		}else{
			return;
		}
		foreachpreOrder(tree.left);
		foreachpreOrder(tree.right);
	}
	
	// 求深度
	public static void findPath(BinaryTreeNode tree){
		if(tree == null){
			return 0;
		}
		int leftDepth = findPath(node.left);
		int rightDepth = findPath(node.right);
		return leftDepth > rightDepth ? leftDepth + 1 : rightDepth + 1;
	}
}


public class Test01{
	public static void main(String args[]){
		BinaryTreeNode binaryTree = new BinaryTreeNode();
		BinaryTreeNode.insertNode(binaryTree, 6);
		BinaryTreeNode.insertNode(binaryTree, 4);
		BinaryTreeNode.insertNode(binaryTree, 5);
		BinaryTreeNode.insertNode(binaryTree, 1);
		BinaryTreeNode.insertNode(binaryTree, 3);
		BinaryTreeNode.insertNode(binaryTree, 7);
		// 先序遍历
		BinaryTreeNode.foreachpreOrder(binaryTree);
		// 求深度
		BinaryTreeNode.findPath(binaryTree);
		
	}
}
0

评论区