//求二叉树高度,返回左右子树高度。 int getDepth(TreeNode *root){ if(root) return 0; // 树为空返回0 int left = getDepth(root->left); int right = getDepth(root->right); return 1 + max(left, right); } int getDepth(TreeNode *root){ if(root){ return 1+max(getDepth(root->left),getDepth(root->right)); } return 0; } // 也可以将返回值定义到实参中。 void getDepth(TreeNode *root, int &dept){ if(!root) {dept=0;return; }// 树为空返回 int left, right; // 定义的左右子树深度,传进函数,获取左右子树高度,相当于获得其返回值。 getDepth(root->left, left); getDepth(root->right, right); dept = 1 + max(left, right); }2、适合求递归中间符合的条件值,求中序遍历的第k个节点,无法划分左右子树递归直接返回,只能定义全局变量标记。
// 求中序第k个节点,K定义的全局变量,ans保存查找的值 void preOrder(TreeNode* proot, int &ans) { if(proot){ preOrder(proot->left, ans); if(--K == 0) ans=proot->val; preOrder(proot->right, ans); } } void preOrder(TreeNode* proot, int &ans) { if(!proot) return; preOrder(proot->left, ans); if(--K == 0) ans=proot->val; preOrder(proot->right, ans); }
欢迎分享,转载请注明来源:内存溢出
评论列表(0条)