当然,下面是如何在Java和Python中表示二叉树,并给出一些常见操作的代码示例。
Java 表示二叉树及常见操作
1. 定义节点类
class TreeNode { int val; TreeNode left; TreeNode right; TreeNode(int x) { val = x; left = null; right = null; }
}
2. 常见操作
插入节点(以根节点和值为参数)
public class BinaryTree { private TreeNode root; public BinaryTree() { root = null; } // 插入节点 public void insert(int val) { root = insertRec(root, val); } private TreeNode insertRec(TreeNode root, int val) { if (root == null) { root = new TreeNode(val); return root; } if (val < root.val) { root.left = insertRec(root.left, val); } else if (val > root.val) { root.right = insertRec(root.right, val); } return root; } // 查找节点 public boolean search(int val) { return searchRec(root, val); } private boolean searchRec(TreeNode root, int val) { if (root == null) { return false; } if (root.val == val) { return true; } return val < root.val ? searchRec(root.left, val) : searchRec(root.right, val); } // 中序遍历 public void inorder() { inorderRec(root); } private void inorderRec(TreeNode root) { if (root != null) { inorderRec(root.left); System.out.print(root.val + " "); inorderRec(root.right); } } public static void main(String[] args) { BinaryTree tree = new BinaryTree(); tree.insert(50); tree.insert(30); tree.insert(20); tree.insert(40); tree.insert(70); tree.insert(60); tree.insert(80); System.out.println("中序遍历结果:"); tree.inorder(); System.out.println("\n查找70: " + tree.search(70)); System.out.println("查找99: " + tree.search(99)); }
}
Python 表示二叉树及常见操作
1. 定义节点类
class TreeNode: def __init__(self, x): self.val = x self.left = None self.right = None
2. 常见操作
插入节点(以根节点和值为参数)
class BinaryTree: def __init__(self): self.root = None # 插入节点 def insert(self, val): self.root = self._insert_rec(self.root, val) def _insert_rec(self, root, val): if root is None: root = TreeNode(val) return root if val < root.val: root.left = self._insert_rec(root.left, val) elif val > root.val: root.right = self._insert_rec(root.right, val) return root # 查找节点 def search(self, val): return self._search_rec(self.root, val) def _search_rec(self, root, val): if root is None: return False if root.val == val: return True return self._search_rec(root.left, val) if val < root.val else self._search_rec(root.right, val) # 中序遍历 def inorder(self): self._inorder_rec(self.root) print() # 换行 def _inorder_rec(self, root): if root is not None: self._inorder_rec(root.left) print(root.val, end=' ') self._inorder_rec(root.right) # 测试代码
if __name__ == "__main__": tree = BinaryTree() tree.insert(50) tree.insert(30) tree.insert(20) tree.insert(40) tree.insert(70) tree.insert(60) tree.insert(80) print("中序遍历结果:") tree.inorder() print(f"查找70: {tree.search(70)}") print(f"查找99: {tree.search(99)}")
总结
- Java 使用类
TreeNode
来定义节点,并通过递归方法实现插入、查找和中序遍历。 - Python 同样使用类
TreeNode
来定义节点,并通过递归方法实现插入、查找和中序遍历。
这些代码示例展示了如何在两种语言中构建二叉树并执行基本操作。希望这对你有所帮助!