TreeNode类结构定义
@interface TreeNode : NSObject 本文共 1691 字,大约阅读时间需要 5 分钟。
TreeNode类结构定义
@interface TreeNode : NSObject
{@property NSNumber *value;@property TreeNode *left;}
TreeNode类定义了TreeNode的值属性(value)以及左右子节点属性(left)。通过这些属性,我们可以构建一个二叉树结构。
二叉树遍历算法实现
在实现二叉树的遍历算法时,我们需要分别实现前序遍历、中序遍历和后序遍历。以下是各自的实现思路和代码示例:
前序遍历(Preorder Traversal)
前序遍历的特点是先访问根节点,然后访问左子节点,最后访问右子节点。实现时,我们可以使用递归的方式:
void preorderTraversal(TreeNode *node) {if (node == nil) return;// 访问节点// 假设需要执行某种操作,比如打印节点值// 在实际应用中,可能会替换为具体的操作逻辑preorderTraversal(node.left);preorderTraversal(node.right);}
中序遍历(Inorder Traversal)
中序遍历的特点是先访问左子节点,最后访问右子节点。常见的实现方式是使用递归或者栈结构:
void inorderTraversal(TreeNode *node) {if (node == nil) return;inorderTraversal(node.left);// 假设需要执行某种操作,比如打印节点值// 在实际应用中,可能会替换为具体的操作逻辑inorderTraversal(node.right);}
后序遍历(Postorder Traversal)
后序遍历的特点是先访问左子节点和右子节点,最后访问根节点。递归实现起来比较直观:
void postorderTraversal(TreeNode *node) {if (node == nil) return;postorderTraversal(node.left);postorderTraversal(node.right);// 假设需要执行某种操作,比如打印节点值// 在实际应用中,可能会替换为具体的操作逻辑}
代码示例
// 初始化根节点TreeNode *root = [[TreeNode alloc] init];root.value = [NSNumber numberWithInt:1];root.left = [[TreeNode alloc] init];root.left.value = [NSNumber numberWithInt:2];root.left.left = [[TreeNode alloc] init];root.left.left.value = [NSNumber numberWithInt:3];root.right = [[TreeNode alloc] init];root.right.value = [NSNumber numberWithInt:4];
// 调用遍历方法[root preorderTraversal];[root inorderTraversal];[postorderTraversal];
转载地址:http://mfifk.baihongyu.com/